home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / mint / shells / tcsh602.zoo / tcsh602 / tcsh.1 < prev    next >
Text File  |  1993-02-22  |  113KB  |  2,509 lines

  1.  
  2.  
  3.  
  4.    19 December 1991                                                   TCSH(1)
  5.  
  6.  
  7.  
  8.    NAME
  9.      tcsh - C shell with file name completion and command line editing
  10.  
  11.    SYNOPSIS
  12.      tcsh [ -bcdefimnqstvVxX ] [ _✓a_✓r_✓g_✓u_✓m_✓e_✓n_✓t ... ]
  13.  
  14.      or
  15.      tcsh -l
  16.  
  17.      OS/Dependent Options
  18.      tcsh [ -F ] [ -Dname[=value] ]
  19.  
  20.    DESCRIPTION
  21.      _✓T_✓c_✓s_✓h is an enhanced version of the Berkeley UNIX C shell _✓c_✓s_✓h(1).  It
  22.      behaves exactly like the C shell, except for the added utilities of:
  23.  
  24.        1)  Command line editing using Emacs-style commands.
  25.  
  26.        2)  Visual step up/down through the history list.
  27.  
  28.        3)  Terminal mode sanity checking and resetting.
  29.  
  30.        4)  Interactive command, file name and user name completion.
  31.  
  32.        5)  File/directory/user list in the middle of a typed command.
  33.  
  34.        6)  Spelling correction of command, file, and user names.
  35.  
  36.        7)  Lookup of command documentation in the middle of a typed command.
  37.  
  38.        8)  Enhanced history mechanism.
  39.  
  40.        9)  Automatic locking/logout after long periods of idle time.
  41.  
  42.        10) Automatic execution of a single command prior to printing each
  43.            prompt.
  44.  
  45.        11) Automatic periodic command execution.
  46.  
  47.        12) A new syntax for the prompt, and the ability to set the prompt for
  48.            "while" and "for" loops.
  49.  
  50.        13) Time stamps in the history list.
  51.  
  52.        14) An addition to the syntax of filenames to access entries in the
  53.            directory stack, and the ability treat symbolic links in a sane
  54.            way when changing directories.
  55.  
  56.        15) The ability to watch for logins and logouts by user or terminal on
  57.            the machine.
  58.  
  59.        16) A scheduled event list, which specifies commands which are to be
  60.            executed at given times.
  61.  
  62.        17) A new builtin that does a subset of _✓l_✓s(1).
  63.  
  64.        18) An addition to the file expression syntax for a character not in a
  65.            set of characters and the ability to negate a globbing pattern.
  66.  
  67.        19) New automatically initialized environment variables _✓H_✓O_✓S_✓T and _✓H_✓O_✓S_✓T_✓-
  68.            _✓T_✓Y_✓P_✓E.
  69.  
  70.        20) Commands for debugging terminal capabilities.
  71.  
  72.        21) Searching for the visual history mechanism.
  73.  
  74.        22) New builtins for the _✓w_✓h_✓i_✓c_✓h(1) and _✓w_✓h_✓e_✓r_✓e commands.
  75.  
  76.        23) Restarting a stopped editor with two keystrokes.
  77.  
  78.        24) Status line support
  79.  
  80.        25) Automatic execution of a command when the current working direc-
  81.            tory is changed.
  82.  
  83.        26) Native Language System support.
  84.  
  85.        27) Automatic process time reporting.
  86.  
  87.        28) OS Dependent Builtin Support
  88.  
  89.        29) Automatic window size adjustment
  90.  
  91.        30) Input files
  92.  
  93.        31) Additional/Undocumented Options
  94.  
  95.        32) Enhanced history/variable modifier expansion
  96.  
  97.        33) Programmable file/user/variable/alias completion.
  98.  
  99.      For a description of standard C-shell features, see the _✓c_✓s_✓h manual page.
  100.  
  101.    1. COMMAND LINE EDITING
  102.      Commands that the user types in may be edited using the same control
  103.      characters that Gnu Emacs or vi uses.  Arrow and function key sequences
  104.      are also allowed.  _✓T_✓c_✓s_✓h allows this by setting the terminal to `CBREAK'
  105.      mode and reading the input one character at a time.
  106.  
  107.      There is a new shell command, _✓b_✓i_✓n_✓d_✓k_✓e_✓y, that allows the user to redefine
  108.      what any key does, or find out what any or all of the keys do.
  109.  
  110.      Syntax: bindkey [ -a ] [ -c ] [ -s ] [ -v ] [ -e ] [ -d ] [ -l ] [ -r ]
  111.      [ -- ] [ in-string [ out-string | command ]]
  112.  
  113.      If no values are given all bindings are listed. If only in-string is
  114.      given, bindings for the in-string is listed.
  115.  
  116.      Otherwise it binds the in-string to the given out-string or command.  If
  117.      out-string, this is treated as input to _✓t_✓c_✓s_✓h when in-string is typed.
  118.      This may be used recursively to currently a level of 10 deep.
  119.  
  120.      There are two basic key maps: the normal and alternative one. The alter-
  121.      native is used by VI command mode. For multi-character input the basic
  122.      key maps contains a sequence-lead-in for the first character in the
  123.      input.
  124.  
  125.      Options:
  126.          -a    bind in-string in alternative key map.
  127.          -s    bind an out-string instead of a command
  128.          -c    bind a unix command instead of a command
  129.          -v    bind for default VI-mode
  130.          -e    bind for default emacs-mode
  131.          -d    bind to compiled in default
  132.          -l    list functions available with short description
  133.          -r    remove the binding of in-string
  134.  
  135.      In strings control characters may be written as caret-<letter> and
  136.      backslash ("\") is used to escape a character as follows:
  137.           \a
  138.             bell character
  139.           \n
  140.             line feed (new line)
  141.           \b
  142.             back space
  143.           \t
  144.             horizontal tab
  145.           \v
  146.             vertical tab
  147.           \f
  148.             form feed
  149.           \r
  150.             carriage return
  151.           \e
  152.             escape
  153.           \nnn
  154.             character code in octal
  155.      In all other cases \ escapes the following character. Needed for escap-
  156.      ing the special meaning of \ and ^.  Delete is written as "^?" (caret-
  157.      question mark).
  158.  
  159.      _✓T_✓c_✓s_✓h always binds the arrow keys as defined by the termcap entry to:
  160.  
  161.            up arrow       up-history
  162.            down arrow     down-history
  163.            right arrow    forward-char
  164.            left arrow     backward-char
  165.  
  166.      except where these bindings would alter other single character bindings.
  167.      If this is not desired one can avoid the automatic arrow key binding
  168.      using _✓s_✓e_✓t_✓t_✓c to change the arrow key escape sequences to the empty
  169.      string.  The ansi/vt100 sequences for arrow keys are always bound.
  170.  
  171.      The following is a list of the default emacs and vi bindings.  Charac-
  172.      ters with the 8th bit set are written as M-<character>.  Note however,
  173.      that unlike with the old _✓b_✓i_✓n_✓d command (see below), the syntax M-
  174.      <character> has no special meaning to the _✓b_✓i_✓n_✓d_✓k_✓e_✓y command, and the bind-
  175.      ings for the sequence escape+<character> and M-<character> as given
  176.      below are handled separately (although the the default bindings are the
  177.      same).  The printable ascii characters not mentioned in the list are
  178.      bound to the _✓s_✓e_✓l_✓f-_✓i_✓n_✓s_✓e_✓r_✓t-_✓c_✓o_✓m_✓m_✓a_✓n_✓d function, which just inserts the given
  179.      character literally into the input line.  The remaining characters are
  180.      bound to the _✓u_✓n_✓d_✓e_✓f_✓i_✓n_✓e_✓d-_✓k_✓e_✓y function, which only causes a beep (unless
  181.      _✓n_✓o_✓b_✓e_✓e_✓p is set, of course).
  182.  
  183.            EMACS bindings
  184.  
  185.            "^@"                     ->  set-mark-command
  186.            "^A"                     ->  beginning-of-line
  187.            "^B"                     ->  backward-char
  188.            "^C"                     ->  tty-sigintr
  189.            "^D"                     ->  delete-char-or-list
  190.            "^E"                     ->  end-of-line
  191.            "^F"                     ->  forward-char
  192.            "^G"                     ->  is undefined
  193.            "^H"                     ->  backward-delete-char
  194.            "^I"                     ->  complete-word
  195.            "^J"                     ->  newline
  196.            "^K"                     ->  kill-line
  197.            "^L"                     ->  clear-screen
  198.            "^M"                     ->  newline
  199.            "^N"                     ->  down-history
  200.            "^O"                     ->  tty-flush-output
  201.            "^P"                     ->  up-history
  202.            "^Q"                     ->  tty-start-output
  203.            "^R"                     ->  redisplay
  204.            "^S"                     ->  tty-stop-output
  205.            "^T"                     ->  transpose-chars
  206.            "^U"                     ->  kill-whole-line
  207.            "^V"                     ->  quoted-insert
  208.            "^W"                     ->  kill-region
  209.            "^X"                     ->  sequence-lead-in
  210.            "^Y"                     ->  yank
  211.            "^Z"                     ->  tty-sigtsusp
  212.            "^["                     ->  sequence-lead-in
  213.            "^\"                     ->  tty-sigquit
  214.            "^]"                     ->  tty-dsusp
  215.            " " to "/"               ->  self-insert-command
  216.            "0"  to "9"              ->  digit
  217.            ":"  to "~"              ->  self-insert-command
  218.            "^?"                     ->  backward-delete-char
  219.  
  220.            EMACS Multi-character and 8 bit bindings
  221.  
  222.            "^[^D" or "M-^D"         ->  list-choices
  223.            "^[^H" or "M-^H"         ->  backward-delete-word
  224.            "^[^I" or "M-^I"         ->  complete-word
  225.            "^[^L" or "M-^L"         ->  clear-screen
  226.            "^[^Z" or "M-^Z"         ->  run-fg-editor
  227.            "^[^[" or "M-^["         ->  complete-word
  228.            "^[^_" or "M-^_"         ->  copy-prev-word
  229.            "^[ "  or "M- "          ->  expand-history
  230.            "^[!"  or "M-!"          ->  expand-history
  231.            "^[$"  or "M-$"          ->  spell-line
  232.            "^[0"  or "M-0"          ->  digit-argument
  233.            "^[1"  or "M-1"          ->  digit-argument
  234.            "^[2"  or "M-2"          ->  digit-argument
  235.            "^[3"  or "M-3"          ->  digit-argument
  236.            "^[4"  or "M-4"          ->  digit-argument
  237.            "^[5"  or "M-5"          ->  digit-argument
  238.            "^[6"  or "M-6"          ->  digit-argument
  239.            "^[7"  or "M-7"          ->  digit-argument
  240.            "^[8"  or "M-8"          ->  digit-argument
  241.            "^[9"  or "M-9"          ->  digit-argument
  242.            "^[?"  or "M-?"          ->  which-command
  243.            "^[B"  or "M-B"          ->  backward-word
  244.            "^[C"  or "M-C"          ->  capitalize-word
  245.            "^[D"  or "M-D"          ->  delete-word
  246.            "^[F"  or "M-F"          ->  forward-word
  247.            "^[H"  or "M-H"          ->  run-help
  248.            "^[L"  or "M-L"          ->  downcase-word
  249.            "^[N"  or "M-N"          ->  history-search-forward
  250.            "^[P"  or "M-P"          ->  history-search-backward
  251.            "^[R"  or "M-R"          ->  toggle-literal-history
  252.            "^[S"  or "M-S"          ->  spell-word
  253.            "^[U"  or "M-U"          ->  upcase-word
  254.            "^[W"  or "M-W"          ->  copy-region-as-kill
  255.            "^[_"  or "M-_"          ->  insert-last-word
  256.            "^[b"  or "M-b"          ->  backward-word
  257.            "^[c"  or "M-c"          ->  capitalize-word
  258.            "^[d"  or "M-d"          ->  delete-word
  259.            "^[f"  or "M-f"          ->  forward-word
  260.            "^[h"  or "M-h"          ->  run-help
  261.            "^[l"  or "M-l"          ->  downcase-word
  262.            "^[n"  or "M-n"          ->  history-search-forward
  263.            "^[p"  or "M-p"          ->  history-search-backward
  264.            "^[r"  or "M-r"          ->  toggle-literal-history
  265.            "^[s"  or "M-s"          ->  spell-word
  266.            "^[u"  or "M-u"          ->  upcase-word
  267.            "^[w"  or "M-w"          ->  copy-region-as-kill
  268.            "^[^?" or "M-^?"         ->  backward-delete-word
  269.            "^X^X"                   ->  exchange-point-and-mark
  270.            "^X*"                    ->  expand-glob
  271.            "^X$"                    ->  expand-variables
  272.            "^XG"                    ->  list-glob
  273.            "^Xg"                    ->  list-glob
  274.            "^Xn                     ->  normalize-path
  275.            "^XN                     ->  normalize-path
  276.  
  277.  
  278.            VI Insert Mode functions
  279.  
  280.            "^@"                     ->  is undefined
  281.            "^A"                     ->  beginning-of-line
  282.            "^B"                     ->  backward-char
  283.            "^C"                     ->  tty-sigintr
  284.            "^D"                     ->  list-or-eof
  285.            "^E"                     ->  end-of-line
  286.            "^F"                     ->  forward-char
  287.            "^G"                     ->  list-glob
  288.            "^H"                     ->  backward-delete-char
  289.            "^I"                     ->  complete-word
  290.            "^J"                     ->  newline
  291.            "^K"                     ->  kill-line
  292.            "^L"                     ->  clear-screen
  293.            "^M"                     ->  newline
  294.            "^N"                     ->  down-history
  295.            "^O"                     ->  tty-flush-output
  296.            "^P"                     ->  up-history
  297.            "^Q"                     ->  tty-start-output
  298.            "^R"                     ->  redisplay
  299.            "^S"                     ->  tty-stop-output
  300.            "^T"                     ->  transpose-chars
  301.            "^U"                     ->  backward-kill-line
  302.            "^V"                     ->  quoted-insert
  303.            "^W"                     ->  backward-delete-word
  304.            "^X"                     ->  expand-line
  305.            "^Y"                     ->  tty-dsusp
  306.            "^Z"                     ->  tty-sigtsusp
  307.            "^["                     ->  vi-cmd-mode
  308.            "^\"                     ->  tty-sigquit
  309.            " " to "~"               ->  self-insert-command
  310.            "^?"                     ->  backward-delete-char
  311.  
  312.            VI Command Mode functions
  313.  
  314.            "^@"                     ->  is undefined
  315.            "^A"                     ->  beginning-of-line
  316.            "^B"                     ->  is undefined
  317.            "^C"                     ->  tty-sigintr
  318.            "^D"                     ->  list-choices
  319.            "^E"                     ->  end-of-line
  320.            "^F"                     ->  is undefined
  321.            "^G"                     ->  list-glob
  322.            "^H"                     ->  backward-char
  323.            "^I"                     ->  vi-cmd-mode-complete
  324.            "^J"                     ->  newline
  325.            "^K"                     ->  kill-line
  326.            "^L"                     ->  clear-screen
  327.            "^M"                     ->  newline
  328.            "^N"                     ->  down-history
  329.            "^O"                     ->  tty-flush-output
  330.            "^P"                     ->  up-history
  331.            "^Q"                     ->  tty-start-output
  332.            "^R"                     ->  redisplay
  333.            "^S"                     ->  tty-stop-output
  334.            "^T"                     ->  is undefined
  335.            "^U"                     ->  backward-kill-line
  336.            "^V"                     ->  is undefined
  337.            "^W"                     ->  backward-delete-word
  338.            "^X"                     ->  expand-line
  339.            "^["                     ->  sequence-lead-in
  340.            "^\"                     ->  tty-sigquit
  341.            " "                      ->  forward-char
  342.            "!"                      ->  expand-history
  343.            "$"                      ->  end-of-line
  344.            "*"                      ->  expand-glob
  345.            "+"                      ->  down-history
  346.            ";"                      ->  vi-repeat-char-fwd
  347.            ","                      ->  vi-repeat-char-back
  348.            "-"                      ->  up-history
  349.            "."                      ->  is undefined
  350.            "/"                      ->  vi-search-back
  351.            "0"                      ->  vi-zero
  352.            "1" to "9"               ->  digit-argument
  353.            "?"                      ->  vi-search-fwd
  354.            "@"                      ->  is undefined
  355.            "A"                      ->  vi-add-at-eol
  356.            "B"                      ->  vi-word-back
  357.            "C"                      ->  change-till-end-of-line
  358.            "D"                      ->  kill-line
  359.            "E"                      ->  vi-endword
  360.            "F"                      ->  vi-char-back
  361.            "I"                      ->  vi-insert-at-bol
  362.            "J"                      ->  history-search-forward
  363.            "K"                      ->  history-search-backward
  364.            "N"                      ->  vi-search-back
  365.            "O"                      ->  sequence-lead-in
  366.            "R"                      ->  vi-replace-mode
  367.            "S"                      ->  vi-substitute-line
  368.            "T"                      ->  vi-charto-back
  369.            "U"                      ->  is undefined
  370.            "V"                      ->  expand-variables
  371.            "W"                      ->  vi-word-fwd
  372.            "X"                      ->  backward-delete-char
  373.            "["                      ->  sequence-lead-in
  374.            "\^"                     ->  beginning-of-line
  375.            "a"                      ->  vi-add
  376.            "b"                      ->  backward-word
  377.            "c"                      ->  is undefined
  378.            "d"                      ->  vi-delmeta
  379.            "e"                      ->  vi-eword
  380.            "f"                      ->  vi-char-fwd
  381.            "h"                      ->  backward-char
  382.            "i"                      ->  vi-insert
  383.            "j"                      ->  down-history
  384.            "k"                      ->  up-history
  385.            "l"                      ->  forward-char
  386.            "m"                      ->  is undefined
  387.            "n"                      ->  vi-search-fwd
  388.            "r"                      ->  vi-replace-char
  389.            "s"                      ->  vi-substitute-char
  390.            "t"                      ->  vi-charto-fwd
  391.            "u"                      ->  vi-undo
  392.            "v"                      ->  expand-variables
  393.            "w"                      ->  vi-beginning-of-next-word
  394.            "x"                      ->  delete-char
  395.            "~"                      ->  change-case
  396.            "^?"                     ->  backward-delete-char
  397.            "M-?"                    ->  run-help
  398.            "M-["                    ->  sequence-lead-in
  399.            "M-O"                    ->  sequence-lead-in
  400.  
  401.            VI Multi-character bindings
  402.  
  403.            "^[?"                    ->  run-help
  404.  
  405.  
  406.      In _✓t_✓c_✓s_✓h there are two input modes: _✓i_✓n_✓s_✓e_✓r_✓t and _✓o_✓v_✓e_✓r_✓w_✓r_✓i_✓t_✓e. All characters
  407.      that are bound to the _✓s_✓e_✓l_✓f-_✓i_✓n_✓s_✓e_✓r_✓t-_✓c_✓o_✓m_✓m_✓a_✓n_✓d either get inserted or
  408.      overwrite what was under the cursor depending on the input mode. In
  409.      emacs one can toggle between modes using the _✓o_✓v_✓e_✓r_✓w_✓r_✓i_✓t_✓e-_✓m_✓o_✓d_✓e function,
  410.      and in VI one can use any of the replace mode commands.  By default the
  411.      mode is preserved between input lines. To specify a default mode that
  412.      can be enforced at the beginning of each command line, the variable
  413.      _✓i_✓n_✓p_✓u_✓t_✓m_✓o_✓d_✓e can be set to either _✓i_✓n_✓s_✓e_✓r_✓t or _✓o_✓v_✓e_✓r_✓w_✓r_✓i_✓t_✓e.
  414.  
  415.      There is also an older version of bindkey called _✓b_✓i_✓n_✓d, that allows the
  416.      user to redefine what any key does, or find out what any or all of the
  417.      keys do. This is retained for compatibility reasons.
  418.  
  419.      If given two arguments _✓b_✓i_✓n_✓d binds the function (first argument) to the
  420.      given key (second argument).  The key may be: the direct character or a
  421.      caret-<letter> combination, which is converted to control-<letter>; M-
  422.      <letter> for an escaped character; or F-<string> for a function key.
  423.      For the last of these, the function key prefix must be bound to the
  424.      function "sequence-lead-in" and the string specified to the _✓b_✓i_✓n_✓d command
  425.      must not include this prefix.
  426.  
  427.      If given one argument _✓b_✓i_✓n_✓d takes the argument as the name for a key and
  428.      tells what that key does.  As a special case, the user can say
  429.  
  430.            bind emacs
  431.      or
  432.            bind vi
  433.  
  434.      to bind all the keys for Emacs or vi mode respectively.
  435.  
  436.      If given no arguments _✓b_✓i_✓n_✓d tells what all of the keys do.  If you give
  437.      bind the single argument of 'defaults', it resets each key to its
  438.      default value (see the above list).
  439.  
  440.    2. VISUAL HISTORY
  441.      The keys ^P and ^N are used to step up and down the history list.  If
  442.      the user has typed in the following:
  443.  
  444.            > ls
  445.            foo  bar
  446.            > echo mumble
  447.            mumble
  448.            >
  449.  
  450.      then enters ^_✓P, the shell will place "echo mumble" into the editing
  451.      buffer, and will put the cursor at the end of the line.  If another ^_✓P
  452.      is entered, then the editing line will change to "ls".  More ^_✓Ps will
  453.      make the bell ring, since there are no more lines in the history.  ^_✓N
  454.      works the same way, except it steps down (forward in time).
  455.  
  456.  
  457.      An easy way to re-do a command is to type ^_✓P followed by _✓R_✓e_✓t_✓u_✓r_✓n. Also,
  458.      pieces of previous commands can be assembled to make a new command.  The
  459.      commands that work on regions are especially useful for this.
  460.  
  461.      ^_✓P and ^_✓N actually only copy commands from out of the history into the
  462.      edit buffer; thus the user may step back into the history and then edit
  463.      things, but those changes do not affect what is actually in _✓t_✓c_✓s_✓h '_✓s his-
  464.      tory.
  465.  
  466.      Another way to recall (parts of) history commands is via the 'expand-
  467.      history' function. A variation of the 'expand-history' function is
  468.      called 'magic-space'.  This function expands _✓c_✓s_✓h history, and always
  469.      appends a space. Magic-space thus can be bound to <space>, to automati-
  470.      cally expand _✓c_✓s_✓h history.  Expand-history is normally bound to _✓M-<_✓s_✓p_✓a_✓c_✓e>
  471.      and magic-space is not bound.
  472.  
  473.    3. TTY MODE SANITY
  474.      As part of the editor, _✓t_✓c_✓s_✓h does a check and reset of the terminal mode
  475.      bits.  If the speed has been changed, then _✓t_✓c_✓s_✓h will change to using
  476.      that speed.  _✓T_✓c_✓s_✓h will also obey changes in the padding needed by the
  477.      tty.  Also, the shell will automatically turn off RAW and CBREAK (on
  478.      systems that use _✓t_✓e_✓r_✓m_✓i_✓o(_✓7) it will turn on ICANON) modes, and will turn
  479.      on the tty driver's output processing (OPOST).
  480.  
  481.      The list of the tty modes that are always set or cleared by _✓t_✓c_✓s_✓h can be
  482.      examined and modified using the _✓s_✓e_✓t_✓t_✓y builtin.  The _✓s_✓e_✓t_✓t_✓y display is
  483.      similar to _✓s_✓t_✓t_✓y(_✓1), and varies depending on the system's tty driver.
  484.      Modes that _✓t_✓c_✓s_✓h will always try to set are shown as +_✓m_✓o_✓d_✓e . Modes that
  485.      _✓t_✓c_✓s_✓h will always try to clear are shown as -_✓m_✓o_✓d_✓e and modes that tcsh
  486.      will track and allow to be modified are not shown by default, or if the
  487.      -_✓a flag is given, are shown without a leading sign. For tty characters,
  488.      -_✓c_✓h_✓a_✓r disables the tty character, while +_✓c_✓h_✓a_✓r protects the tty character
  489.      from being changed.
  490.  
  491.      Setty can be used to control the three different modes _✓t_✓c_✓s_✓h uses for the
  492.      tty. The default mode displayed is the "execute" mode which is used when
  493.      tcsh executes commands. The two other modes are the "edit" mode and the
  494.      "quote" mode. The "edit" mode is used for command line editing, and the
  495.      "quote" mode is used when entering literal characters. The "execute"
  496.      mode can be specified with -_✓x , the "edit" mode with -_✓d , and the
  497.      "quote" mode with -_✓q For example if one wants to set the _✓e_✓c_✓h_✓o_✓k flag and
  498.      let the _✓e_✓c_✓h_✓o_✓e pass unchanged:
  499.  
  500.            > setty
  501.            iflag:-inlcr -igncr +icrnl
  502.            oflag:+opost +onlcr -onlret
  503.            cflag:
  504.            lflag:+isig +icanon +echo +echoe -echok -echonl -noflsh
  505.                  +echoctl -flusho +iexten
  506.            chars:
  507.            > setty +echok echoe
  508.            > setty
  509.            iflag:-inlcr -igncr +icrnl
  510.            oflag:+opost +onlcr -onlret
  511.            cflag:
  512.            lflag:+isig +icanon +echo +echok -echonl -noflsh +echoctl
  513.                  -flusho +iexten
  514.            chars:
  515.  
  516.  
  517.    4. WORD COMPLETION
  518.      In typing commands, it is no longer necessary to type a complete name,
  519.      only a unique abbreviation is necessary.  When you type a TAB to _✓t_✓c_✓s_✓h it
  520.      will complete the name for you, echoing the full name on the terminal
  521.      (and entering it into the edit buffer).  If the prefix you typed matches
  522.      no name, the terminal bell is rung, unless the variable _✓n_✓o_✓b_✓e_✓e_✓p is set.
  523.      The name may be partially completed if the prefix matches several longer
  524.      names.  If this is the case, the name is extended up to the point of
  525.      ambiguity, and the bell is rung.  This works for file names, command
  526.      names, shell variables and the ~ user name convention.  The variable
  527.      _✓f_✓i_✓g_✓n_✓o_✓r_✓e may be set to a list of suffixes to be disregarded during com-
  528.      pletion.
  529.  
  530.      _✓E_✓x_✓a_✓m_✓p_✓l_✓e
  531.  
  532.      Assume the current directory contained the files:
  533.  
  534.            DSC.TXT   bin       cmd       lib       memos
  535.            DSC.NEW   chaos     cmtest    mail      netnews
  536.            bench     class     dev       mbox      new
  537.  
  538.      The command:
  539.  
  540.            > gnumacs ch[TAB]
  541.  
  542.      would cause _✓t_✓c_✓s_✓h to complete the command with the file name chaos.  If
  543.      instead, the user had typed:
  544.  
  545.            > gnumacs D[TAB]
  546.  
  547.      _✓t_✓c_✓s_✓h would have extended the name to DSC and rung the terminal bell,
  548.      indicating partial completion. However, if _✓f_✓i_✓g_✓n_✓o_✓r_✓e had previously been
  549.      set to a list containing .NEW as one element, e.g. ( .o .NEW ), _✓t_✓c_✓s_✓h
  550.      would have completed the `D' to DSC.TXT.
  551.  
  552.      File name completion works equally well when other directories are
  553.      addressed.  Additionally, _✓t_✓c_✓s_✓h understands the C shell tilde (~) conven-
  554.      tion for home directories.  In addition it caches tilde name references
  555.      for fast access. This cache can be flushed by using the builtin _✓r_✓e_✓h_✓a_✓s_✓h.
  556.      Thus,
  557.  
  558.            > cd ~speech/data/fr[TAB]
  559.  
  560.      does what one might expect.  This may also be used to expand login names
  561.      only.  Thus,
  562.  
  563.            > cd ~sy[TAB]
  564.  
  565.      expands to
  566.  
  567.            > cd ~synthesis
  568.  
  569.  
  570.      Command names may also be completed, for example,
  571.  
  572.            > gnum[TAB]
  573.  
  574.      will expand to "gnumacs" (assuming that there are no other commands that
  575.      begin with "gnum").
  576.  
  577.      Shell and environment variables are recognized also and in addition they
  578.      can be expanded:
  579.  
  580.            > set local=/usr/local
  581.            > echo $lo[TAB]
  582.  
  583.      will expand to "$local/". Note that a slash is appended because the
  584.      expanded variable points to a directory. Also:
  585.  
  586.            > set local=/usr/local
  587.            > echo $local/[^D]
  588.            bin/ etc/ lib/ man/ src/
  589.  
  590.      will correctly list the contents of /usr/local. Shell and environment
  591.      variables can also be expanded via the expand-variables function:
  592.  
  593.            > echo $local/[^X$]
  594.            > echo /usr/local/
  595.  
  596.  
  597.      Completion also works when the cursor is in the middle of the line,
  598.      rather than just the end.  All of the text after the cursor will be
  599.      saved, the completion will work (possibly adding to the current name),
  600.      and then the saved text will be restored in place, after the cursor.
  601.  
  602.      The behavior of the completion can be changed by the setting of several
  603.      shell variables:
  604.  
  605.      Setting the _✓r_✓e_✓c_✓e_✓x_✓a_✓c_✓t variable makes an exact command be expanded rather
  606.      than just ringing the bell.  For example, assume the current directory
  607.      has two sub-directories called foo and food, then with _✓r_✓e_✓c_✓e_✓x_✓a_✓c_✓t set the
  608.      following could be done:
  609.  
  610.            > cd fo[TAB]
  611.      to ...
  612.            > cd foo[TAB]
  613.      to ...
  614.            > cd foo/
  615.  
  616.      rather than beeping on the second TAB.
  617.  
  618.      If the _✓a_✓u_✓t_✓o_✓l_✓i_✓s_✓t variable is set, invoking completion when several
  619.      choices are possible will automatically list the choices, effectively
  620.      merging the functionality described in the next section into the comple-
  621.      tion mechanism. If _✓a_✓u_✓t_✓o_✓l_✓i_✓s_✓t is set to "ambiguous", then _✓t_✓c_✓s_✓h will only
  622.      list the choices if there were no new characters added in the completion
  623.      operation.
  624.  
  625.  
  626.      The "noise level" can be controlled by the value that _✓m_✓a_✓t_✓c_✓h_✓b_✓e_✓e_✓p is set
  627.      to: With matchbeep=nomatch, completion will only beep if there are no
  628.      matching names; with matchbeep=ambiguous, completion will _✓a_✓l_✓s_✓o beep if
  629.      there are many possible matches; with matchbeep=notunique, completion
  630.      will _✓a_✓l_✓s_✓o beep when there is an exact match but there are other, longer,
  631.      matches (see recexact).  With matchbeep=never or set to any other value
  632.      completion will never beep. If matchbeep is not set it defaults to ambi-
  633.      guous.
  634.  
  635.      If the _✓a_✓u_✓t_✓o_✓e_✓x_✓p_✓a_✓n_✓d variable is set, the expand-history function will be
  636.      invoked automatically before the completion attempt, expanding normal
  637.      _✓c_✓s_✓h history substitutions.
  638.  
  639.      For covert operation, the variable _✓n_✓o_✓b_✓e_✓e_✓p can be set; it will prevent
  640.      the completion mechanism, as well as _✓t_✓c_✓s_✓h in general, from actually
  641.      beeping.  Finally, if the _✓a_✓u_✓t_✓o_✓c_✓o_✓r_✓r_✓e_✓c_✓t variable is set, the spelling
  642.      correction is attempted for any path components up to the completion
  643.      point.
  644.  
  645.    5. LISTING OF POSSIBLE NAMES
  646.      At any point in typing a command, you may request "what names are avail-
  647.      able".  Thus, when you have typed, perhaps:
  648.  
  649.            > cd ~speech/data/fritz/
  650.  
  651.      you may wish to know what files or sub-directories exist (in
  652.      ~speech/data/fritz), without, of course, aborting the command you are
  653.      typing.  Typing the character Control-D (^D), will list the names
  654.      (files, in this case) available.  The files are listed in multicolumn
  655.      format, sorted column-wise.  Directories are indicated with a trailing
  656.      `/', executable files with a `*', symbolic links with a '@', sockets
  657.      with a '=', FIFOs (named pipes) with a '|', character devices with a
  658.      '%', and block devices with a '#'.  Once printed, the command is re-
  659.      echoed for you to complete.
  660.  
  661.      Additionally, one may want to know which files match a prefix.  If the
  662.      user had typed:
  663.  
  664.            > cd ~speech/data/fr[^D]
  665.  
  666.      all files and sub-directories whose prefix was ``fr'' would be printed.
  667.      Notice that the example before was simply a degenerate case of this with
  668.      a null trailing file name. (The null string is a prefix of all strings.)
  669.      Notice also, that a trailing slash is required to pass to a new direc-
  670.      tory for both file name completion and listing.
  671.  
  672.      The degenerate
  673.  
  674.            > ~[^D]
  675.  
  676.      will print a full list of login names on the current system.  Note, how-
  677.      ever, that the degenerate
  678.  
  679.            > <Spaces>[^D]
  680.  
  681.      does not list all of the commands, but only the files in the current
  682.      working directory.
  683.  
  684.      Listing/expanding of words that match a name containing wildcard charac-
  685.      ters can be done via the list-glob/expand-glob function:
  686.            > ls
  687.            foo.c  bar.c  a.out
  688.            > vi *.c[^Xg]
  689.            foo.c bar.c
  690.            > vi *.c[^X*]
  691.            > vi foo.c bar.c
  692.  
  693.    Command Name Recognition
  694.      Command name recognition and completion works in the same manner as file
  695.      name recognition and completion above.  The current value of the
  696.      environment variable _✓P_✓A_✓T_✓H is used in searching for the command.  For
  697.      example
  698.  
  699.            > newa[TAB]
  700.  
  701.      might expand to
  702.  
  703.            > newaliases
  704.  
  705.      Also,
  706.  
  707.            > new[^D]
  708.  
  709.      would list all commands (along PATH) that begin with "new".
  710.  
  711.      Note that Control-D has three different effects on _✓t_✓c_✓s_✓h. On an empty
  712.      line (one that contains nothing, not even spaces), ^_✓D sends an EOF to
  713.      _✓t_✓c_✓s_✓h just as it does for normal programs.  When the cursor is in the
  714.      middle of a line of text, ^_✓D deletes the character that the cursor is
  715.      under.  Finally, a ^_✓D at the end of a line of text lists the available
  716.      names at that point.  To get a list of available names when the cursor
  717.      is in the middle of a line (or on an empty line), a Meta-Control-D
  718.      should be typed (Escape followed by Control-D).
  719.  
  720.  
  721.    6. SPELLING CORRECTION
  722.      If while typing a command, the user mistypes or misspells a file name,
  723.      user name, or command name, _✓t_✓c_✓s_✓h can correct the spelling.  When
  724.      correcting a file name, each part of the path is individually checked
  725.      and corrected.  Spelling correction can be invoked in several different
  726.      ways:
  727.  
  728.      The _✓s_✓p_✓e_✓l_✓l-_✓w_✓o_✓r_✓d function, normally bound to M-s (and M-S), will attempt
  729.      to correct the word immediately before the cursor.  For example, suppose
  730.      that the user has typed:
  731.  
  732.            > cd /uxr/spol/news[ESC s]
  733.  
  734.      _✓T_✓c_✓s_✓h will check the path for spelling, correct the mistakes, and redraw
  735.      the line as
  736.  
  737.            > cd /usr/spool/news
  738.  
  739.      leaving the cursor at the end of the line.
  740.  
  741.      Spelling correction of the entire command line (independent of where the
  742.      cursor is) can be done with the _✓s_✓p_✓e_✓l_✓l-_✓l_✓i_✓n_✓e function, normally bound to
  743.      M-$ (Escape Dollar-sign).  It will check each word independently, but in
  744.      order to avoid e.g. command options, no correction is attempted on words
  745.      whose first character is found in the string "!.\^-*%".
  746.  
  747.      Finally, automatic spelling correction will be done each time the Return
  748.      key is hit, if the _✓c_✓o_✓r_✓r_✓e_✓c_✓t variable is set to an appropriate value:
  749.      correct=cmd will cause the spelling of the command name only to be
  750.      checked, while correct=all causes checking of all words on the line,
  751.      like the spell-line function.  If any part of the command line is
  752.      corrected, the user will be given a special prompt as defined by the
  753.      _✓p_✓r_✓o_✓m_✓p_✓t_✓3 variable, followed by the corrected line, e.g.
  754.  
  755.            > lz /usr/bin
  756.            CORRECT>ls /usr/bin (y|n|e)?
  757.  
  758.      Answering 'y' or <space> at the prompt will cause the corrected line to
  759.      be executed, 'e' will leave the uncorrected command in the input buffer
  760.      and anything else will execute the original line unchanged.
  761.  
  762.      Automatic correction is not guaranteed to work the way the user
  763.      intended.  Command line parsing is done in a rudimentary fashion. It is
  764.      mostly provided as an experimental feature. Suggestions and improvements
  765.      are welcome.
  766.  
  767.    7. DOCUMENTATION LOOKUP
  768.      The editor function _✓r_✓u_✓n-_✓h_✓e_✓l_✓p (M-h) prints a help file on the current
  769.      command (using the same definition of current as the completion routines
  770.      use).  This help file is found by searching the path list HPATH for
  771.      files of the form foo.help, foo.1, foo.8, or foo.6 in that order (assum-
  772.      ing that the current command is foo).  The file is just printed, not
  773.      paged in any way.  This is because _✓r_✓u_✓n-_✓h_✓e_✓l_✓p is meant to be used to look
  774.      up short help files, not manual pages (although it can do manual pages
  775.      also).
  776.  
  777.    8. ENHANCED HISTORY MECHANISM
  778.      _✓T_✓c_✓s_✓h will save the history list between login sessions.  It does this by
  779.      writing the current list to the file "~/.history" on logout, and reading
  780.      it in on login.  For example, placing the line
  781.  
  782.            > set history=25 savehist=20
  783.  
  784.      tells _✓t_✓c_✓s_✓h to save the last 25 commands on the history list, and to save
  785.      the last 20 of them between logins.  The "savehist" variable may be set
  786.      up to the size of history, although it is an error to have _✓s_✓a_✓v_✓e_✓h_✓i_✓s_✓t
  787.      larger than _✓h_✓i_✓s_✓t_✓o_✓r_✓y. In addition to the above _✓t_✓c_✓s_✓h, keeps unparsed
  788.      (literal) versions of the history if the variable _✓h_✓i_✓s_✓t_✓l_✓i_✓t is set. Also
  789.      the toggle-history function toggles between the parsed and literal ver-
  790.      sion of the recalled history in the editor buffer. For example:
  791.  
  792.            > set histlit
  793.            > echo !:s/foo/bar; ls
  794.            Modifier failed.
  795.            > ^P
  796.            > echo !:s/foo/bar; ls
  797.            > unset histlit
  798.            > echo !:s/foo/bar; ls
  799.            Modifier failed.
  800.            > ^P
  801.            > echo unset histlit[M-r]
  802.            > echo !:s/foo/bar; ls
  803.  
  804.      _✓T_✓c_✓s_✓h also supports the history escape !#. This undocumented _✓c_✓s_✓h escape
  805.      holds the words of the current line. This is useful in renaming com-
  806.      mands:
  807.  
  808.            > mv foo bar!#:1
  809.            mv foo barfoo
  810.  
  811.      Care should be taken when using this history expansion in _✓c_✓s_✓h since
  812.      there is no check for recursion. In _✓t_✓c_✓s_✓h up to 10 levels of recursion
  813.      are allowed.
  814.  
  815.      Another difference between _✓t_✓c_✓s_✓h and _✓c_✓s_✓h history expansion, is the treat-
  816.      ment of history arguments. In _✓c_✓s_✓h !_✓3_✓d expands to event 3 with the letter
  817.      "d" appended to it. There is no way to repeat a command that begins with
  818.      a number using the name of the command in the history escape. In _✓t_✓c_✓s_✓h
  819.      only numeric arguments are treated as event numbers; therefore !_✓3_✓d is
  820.      interpreted as: repeat the last command that started with the string
  821.      "3d". To mimic the _✓c_✓s_✓h behavior !_✓3_✓\_✓d can be used.
  822.  
  823.  
  824.    9. AUTOMATIC LOGOUT/LOCKING
  825.      The automatic locking and logout time are controlled by the variable
  826.      _✓a_✓u_✓t_✓o_✓l_✓o_✓g_✓o_✓u_✓t. The value of the first word is the number of minutes of
  827.      inactivity will be allowed before automatically logging the user out.
  828.      When that many minutes have been reached, the shell prints "auto-logout"
  829.      and dies (without executing ~/.logout).  The default for _✓t_✓c_✓s_✓h is to set
  830.      _✓a_✓u_✓t_✓o_✓l_✓o_✓g_✓o_✓u_✓t for 60 minutes on login shells, and when the user is root.
  831.      To disable autologout (for instance in a window system), unset the shell
  832.      variable _✓a_✓u_✓t_✓o_✓l_✓o_✓g_✓o_✓u_✓t.
  833.  
  834.      The value of the optional second word indicates the number of minutes of
  835.      inactivity after which the user will be prompted for his login password
  836.      to continue working. Failure to enter the correct password 5 times,
  837.      results in auto-logout.
  838.  
  839.    10. EXECUTION OF A COMMAND PRIOR TO EACH PROMPT
  840.      _✓T_✓c_✓s_✓h supports a special alias, _✓p_✓r_✓e_✓c_✓m_✓d, which if set holds a command that
  841.      will be executed before printing each prompt.  For example, if the user
  842.      has done
  843.  
  844.            > alias precmd date
  845.  
  846.      then the program _✓d_✓a_✓t_✓e will be run just before the shell prompts for each
  847.      command.  There are no limitations on what precmd can be set to do,
  848.      although discretion should be used.
  849.  
  850.  
  851.  
  852.  
  853.    11. PERIODIC COMMAND EXECUTION
  854.      _✓T_✓c_✓s_✓h is now capable of providing periodic command execution through the
  855.      use of the shell variable _✓t_✓p_✓e_✓r_✓i_✓o_✓d and the alias _✓p_✓e_✓r_✓i_✓o_✓d_✓i_✓c. When these
  856.      items are set, the alias _✓p_✓e_✓r_✓i_✓o_✓d_✓i_✓c will be executed every _✓t_✓p_✓e_✓r_✓i_✓o_✓d
  857.      minutes.  This provides a convenient means for checking on common but
  858.      infrequent changes, such as new messages.  Example:
  859.  
  860.            > set tperiod = 30
  861.            > alias periodic checknews
  862.  
  863.      This will cause the _✓c_✓h_✓e_✓c_✓k_✓n_✓e_✓w_✓s(1) program to be run every 30 minutes.
  864.      Having the alias _✓p_✓e_✓r_✓i_✓o_✓d_✓i_✓c set but with an unset _✓t_✓p_✓e_✓r_✓i_✓o_✓d (or a value of 0
  865.      for _✓t_✓p_✓e_✓r_✓i_✓o_✓d) will cause _✓p_✓e_✓r_✓i_✓o_✓d_✓i_✓c to degenerate to another form of
  866.      _✓p_✓r_✓e_✓c_✓m_✓d.
  867.  
  868.    12. NEW PROMPT FORMAT
  869.      The format for the _✓p_✓r_✓o_✓m_✓p_✓t shell variable has been changed to include
  870.      many new things, such as the current time of day, current working direc-
  871.      tory, etc..  The new format uses "%<char>" to signal an expansion, much
  872.      like _✓p_✓r_✓i_✓n_✓t_✓f(_✓3_✓S). The available sequences are:
  873.  
  874.            %/          Current working directory.
  875.            %~          cwd.  If it starts with $HOME, that part is
  876.                        replaced by a ~. In addition if a directory
  877.                        name prefix matches a user's home directory,
  878.                        that part of the directory will be substituted
  879.                        with ~user. NOTE: The ~user substitution will
  880.                        only happen if the shell has performed a ~
  881.                        expansion for that user name in this session.
  882.            %c or %.    Trailing component of cwd, may be
  883.                        followed by by a digit to get more than one
  884.                        component, if it starts with $HOME, that
  885.                        part is replaced with a ~.
  886.            %C          Trailing component of cwd, may be followed
  887.                        by a digit to get more than one component, no
  888.                        ~ substitution.
  889.            %h, %!, !   Current history event number.
  890.            %M          The full machine hostname.
  891.            %m          The hostname up to the first ".".
  892.            %S (%s)     Start (stop) standout mode.
  893.            %B (%b)     Start (stop) boldfacing mode. (Only if
  894.                        tcsh was compiled to be eight bit clean.)
  895.            %U (%u)     Start (stop) underline mode. (Only if
  896.                        tcsh was compiled to be eight bit clean.)
  897.            %t or %@    Current time of day, in 12-hour, am/pm format.
  898.            %T          Current time of day, in 24-hour format.
  899.                        (But see the _✓a_✓m_✓p_✓m shell variable below.)
  900.            \c          `c' is parsed the same way as in bindkey.
  901.            ^c          `c' is parsed the same way as in bindkey.
  902.            %%          A single %.
  903.            %n          The user name, contents of $user.
  904.            %d          The weekday in <Day> format.
  905.            %D          The day in dd format.
  906.            %w          The month in <Mon> format.
  907.            %W          The month in mm format.
  908.            %y          The year in yy format.
  909.            %Y          The year in yyyy format.
  910.            %l          The line (tty) the user is logged on.
  911.            %L          clear from prompt to end of display or end of line.
  912.            %#          A `#' if tcsh is run as a root shell,
  913.                        a `>' if not.
  914.            %{..%}      Include string as a literal escape sequence.
  915.                        Note that the enclosed escape sequence, should
  916.                        only be used to change terminal attributes and
  917.                        should not move the cursor location. Also, this
  918.                        cannot be the last character in the prompt
  919.                        string. (Available only if tcsh was compiled to
  920.                        be eight bit clean.)
  921.            %?          return code of the last command executed just
  922.                        before the prompt.
  923.            %R          In prompt3 this is the corrected string; in
  924.                        prompt2 it is the status of the parser.
  925.  
  926.      The sequences for standout are often used to indicate that this is an
  927.      enabled (running as root) shell.  An example:
  928.  
  929.            > set prompt="%m [%h] %U[%@]%u [%/] you rang? "
  930.            tut [37] [_✓2:_✓5_✓4_✓p_✓m] [/usr/accts/sys] you rang? _
  931.  
  932.      In addition, there is a new variable, _✓p_✓r_✓o_✓m_✓p_✓t_✓2, which is used to prompt
  933.      for the body of while and for loops (wherever normal _✓c_✓s_✓h prompts with a
  934.      question mark).  The default for _✓p_✓r_✓o_✓m_✓p_✓t_✓2 is "%R? ": the status of the
  935.      parser followed by a question mark.  This alternate prompt is also used
  936.      when the parser is waiting for more input; i.e. when the previous line
  937.      ended in a \.  The _✓p_✓r_✓o_✓m_✓p_✓t_✓3 variable is used when displaying the
  938.      corrected command line when automatic spelling correction is in effect;
  939.      it defaults to "CORRECT>%R (y|n|e)? ".
  940.  
  941.  
  942.    13. TIME-STAMPED HISTORY LIST
  943.      The history list in _✓t_✓c_✓s_✓h now has a time-of-day stamp attached to each
  944.      history list event.  This time stamp is printed whenever the history
  945.      command is executed.  This allows the user to keep track of when the
  946.      various events occurred.  The time stamps are not maintained on the
  947.      saved history list (also available in _✓c_✓s_✓h); thus, on logging back in,
  948.      all the saved history events will be recorded with the login time as
  949.      their time stamp.  The time stamp printouts can be omitted from the his-
  950.      tory list by adding the -t switch to the _✓h_✓i_✓s_✓t_✓o_✓r_✓y command.
  951.  
  952.    14. DIRECTORY ACCESS
  953.      _✓T_✓c_✓s_✓h supports three new flags to control directory style printing for
  954.      cd, pushd, popd, and dirs:
  955.  
  956.      -_✓n  Print entries in new lines so that the screen width is not exceeded
  957.  
  958.      -_✓l  Don't print ~ but print the whole path
  959.  
  960.      -_✓v  Print the stack entries one in each line, preceded by the stack
  961.          number.
  962.  
  963.      Note that popd +n can be used to pop out stack entries of directories
  964.      that do not exist any more.
  965.  
  966.      _✓T_✓c_✓s_✓h always saves the last directory visited. Changing to the previous
  967.      directory can be done by using '_✓c_✓d -' or '_✓p_✓u_✓s_✓h_✓d -'.
  968.  
  969.      _✓T_✓c_✓s_✓h will now allow the user to access all elements in the directory
  970.      stack directly.  The syntax "=<digit>" is recognized by _✓t_✓c_✓s_✓h as indicat-
  971.      ing a particular directory in the stack.  (This works for the
  972.      file/command name recognition as well.) This syntax is analogous to the
  973.      ~ syntax for access to users' home directories.  The stack is viewed as
  974.      zero-based, i.e., =0 is the same as $cwd, which is the same as ".".  As
  975.      a special case, the string "=-" is recognized as indicating the last
  976.      directory in the stack.  Thus,
  977.  
  978.            > dirs -v
  979.            0 /usr/net/bin
  980.            1 /usr/spool/uucp
  981.            2 /usr/accts/sys
  982.            > echo =2
  983.            /usr/accts/sys
  984.            > ls -l =1/LOGFILE
  985.            -rw-r--r-- 1 uucp   2594 Jan 19 09:09 /usr/spool/uucp/LOGFILE
  986.            > echo =-/.cs*
  987.            /usr/accts/sys/.cshrc
  988.            > echo =4
  989.            Not that many dir stack entries.
  990.            >
  991.  
  992.      _✓T_✓c_✓s_✓h will complain if you ask for a directory stack item which does not
  993.      exist.
  994.  
  995.      In the normal _✓c_✓s_✓h, saying "pushd +2" would rotate the entire stack
  996.      around through 2 stack elements, placing the entry found there at the
  997.      top of the stack.  If, however, the new shell variable _✓d_✓e_✓x_✓t_✓r_✓a_✓c_✓t is set,
  998.      then issuing "pushd +n" will cause the nth directory stack element to be
  999.      extracted from its current position, which will then be pushed onto the
  1000.      top of the stack.  Example:
  1001.  
  1002.            > dirs
  1003.            ~ /usr/spool/uucp /usr/net/bin /sys/src
  1004.            > set dextract
  1005.            > pushd +2
  1006.            /usr/net/bin ~ /usr/spool/uucp /sys/src
  1007.            > unset dextract
  1008.            > pushd +2
  1009.            /usr/spool/uucp /sys/src /usr/net/bin ~
  1010.  
  1011.      In addition, if the shell variable _✓d_✓u_✓n_✓i_✓q_✓u_✓e is set, only directories that
  1012.      are not already in the directory stack will be added when _✓p_✓u_✓s_✓h is
  1013.      invoked.
  1014.  
  1015.      The way symbolic links that point to directories are crossed is deter-
  1016.      mined by the _✓s_✓y_✓m_✓l_✓i_✓n_✓k_✓s variable. By default, it is not set to anything
  1017.      and symbolic links are not treated specially. However, it can be set to
  1018.      either: _✓c_✓h_✓a_✓s_✓e, _✓i_✓g_✓n_✓o_✓r_✓e, or _✓e_✓x_✓p_✓a_✓n_✓d. If _✓s_✓y_✓m_✓l_✓i_✓n_✓k_✓s is set to _✓c_✓h_✓a_✓s_✓e, then
  1019.      every time the directory changes, $_✓c_✓w_✓d reflects the real directory name,
  1020.      and not the name through the link. A notable exception is the user's
  1021.      home directory, but that should be fixed. If _✓s_✓y_✓m_✓l_✓i_✓n_✓k_✓s is set to either
  1022.      _✓i_✓g_✓n_✓o_✓r_✓e or _✓e_✓x_✓p_✓a_✓n_✓d, then tcsh tries to determine the current directory
  1023.      name relative to the name of the current directory before the link was
  1024.      crossed. In simple terms, if you chdir through a symbolic link and then
  1025.      cd .., you will end .. relatively to where you were before you crossed
  1026.      the link and not .. relatively to where the symbolic link points. While
  1027.      _✓i_✓g_✓n_✓o_✓r_✓e affects only builtin commands and completion, _✓e_✓x_✓p_✓a_✓n_✓d affects com-
  1028.      mand execution too, by `fixing' arguments that it considers to be path
  1029.      names. Unfortunately this does not work in every case, specially when
  1030.      file arguments are embedded in command line options. _✓E_✓x_✓p_✓a_✓n_✓d also allows
  1031.      to specify the `real' (as opposed to the one determined relatively to
  1032.      $_✓c_✓w_✓d), _✓b_✓y _✓q_✓u_✓o_✓t_✓i_✓n_✓g _✓t_✓h_✓e _✓f_✓i_✓l_✓e _✓a_✓r_✓g_✓u_✓m_✓e_✓n_✓t.
  1033.  
  1034.      For example:
  1035.  
  1036.            > cd /tmp
  1037.            > mkdir from from/src to
  1038.            > ln -s ../from/src to/dst
  1039.  
  1040.            > unset symlinks
  1041.            > cd /tmp/to/dst; echo $cwd
  1042.            /tmp/to/dst
  1043.            > cd ..; echo $cwd
  1044.            /tmp/from
  1045.  
  1046.            > set symlinks=chase
  1047.            > cd /tmp/to/dst; echo $cwd
  1048.            /tmp/from/src
  1049.            > cd ..; echo $cwd
  1050.            /tmp/from
  1051.  
  1052.            > set symlinks=ignore
  1053.            > cd /tmp/to/dst; echo $cwd
  1054.            /tmp/to/dst
  1055.            > cd ..; echo $cwd
  1056.            /tmp/to
  1057.  
  1058.            > set symlinks=expand
  1059.            > cd /tmp/to/dst; echo $cwd
  1060.            /tmp/to/dst
  1061.            > cd ..; echo $cwd       # builtin
  1062.            /tmp/to
  1063.            > cd /tmp/to/dst; echo $cwd
  1064.            /tmp/to/dst
  1065.            > cd ".."; echo $cwd          # quoted
  1066.            /tmp/from
  1067.            > /bin/echo ..           # rewrites non builtin commands.
  1068.            /tmp/to
  1069.            > /bin/echo ".."
  1070.  
  1071.      While the _✓e_✓x_✓p_✓a_✓n_✓d setting is the most convenient, and makes symbolic
  1072.      links invisible, it can sometimes be misleading and confusing in cases
  1073.      where it fails to recognize arguments. A compromise is to use the _✓i_✓g_✓n_✓o_✓r_✓e
  1074.      setting and use the editor functions "normalize-path", bound by default
  1075.      to ^_✓X_✓n.
  1076.  
  1077.    15. WATCHING FOR LOGINS AND LOGOUTS
  1078.      _✓T_✓c_✓s_✓h has a mechanism so that the user can watch for login and logout
  1079.      activity of any user or terminal in the system.  This is accomplished
  1080.      using the new special shell variable _✓w_✓a_✓t_✓c_✓h, which contains
  1081.      login/terminal pattern pairs to be checked for activity.  For example:
  1082.  
  1083.            > set watch=(sys ttyjd root console)
  1084.  
  1085.      This setting will allow the user to check on when the user "sys" logs in
  1086.      on /dev/ttyjd.  Similarly, it will inform the user of root's activity on
  1087.      the console.  In order to be more general, the word "any" may be substi-
  1088.      tuted for either a user's or a terminal's name, thus allowing
  1089.  
  1090.            > set watch=('b*' any any ttyh0)
  1091.  
  1092.      which will check for users that match the pattern 'b*' logging in or out
  1093.      of the system on any terminal, as well as anyone logging in to
  1094.      /dev/ttyh0. Naturally, the completely general case
  1095.  
  1096.            > set watch=(any any)
  1097.  
  1098.      allows the user to check on any and all login/logout activity in the the
  1099.      system.
  1100.  
  1101.      By default, the interval between checks of users on the system is 10
  1102.      minutes; this can be changed by making the first element of _✓w_✓a_✓t_✓c_✓h a
  1103.      number of minutes which should be used instead, as in
  1104.  
  1105.            > set watch=(40 any any)
  1106.  
  1107.      which will check for any users logging in or out every 40 minutes.
  1108.  
  1109.      There is also a new command, _✓l_✓o_✓g, which is used to cause _✓t_✓c_✓s_✓h to inform
  1110.      the user of all users/terminals affected by _✓w_✓a_✓t_✓c_✓h whether they have been
  1111.      announced before or not.  This is useful if a user has been on for some
  1112.      time and cannot remember if a particular person/terminal is online right
  1113.      now or not.  _✓L_✓o_✓g will reset all indication of previous announcement and
  1114.      give the user the login list all over again, as well as printing the
  1115.      current value of _✓w_✓a_✓t_✓c_✓h.
  1116.  
  1117.      The first time that _✓w_✓a_✓t_✓c_✓h is set at _✓t_✓c_✓s_✓h startup, all affected users and
  1118.      terminals will be printed as though those users/terminals had just
  1119.      logged on.  This may appear to be a bug, but is generally considered a
  1120.      feature, since it allows the user to see who is on when he first logs
  1121.      in.
  1122.  
  1123.      The format of the printouts can be tailored via setting of the variable
  1124.      _✓w_✓h_✓o. The following sequences are available for the format specification:
  1125.  
  1126.            %n          The name of the user that logged in/out.
  1127.            %a          The observed action, i.e. "logged on",
  1128.                        "logged off", or "replaced <olduser> on".
  1129.            %l          The line (tty) the user is logged on.
  1130.            %S (%s)     Start (stop) standout mode.
  1131.            %B (%b)     Start (stop) boldfacing mode. (Only if
  1132.                        tcsh was compiled to be eight bit clean)
  1133.            %U (%u)     Start (stop) underline mode. (Only if
  1134.                        tcsh was compiled to be eight bit clean)
  1135.            %M          The full hostname of the remote host ("local"
  1136.                        if non-remote).
  1137.            %m          The hostname up to the first ".". If only
  1138.                        the ip address is available or the utmp
  1139.                        field contains the name of an x-windows
  1140.                        display, the whole name is printed.
  1141.            %t or %@    The time, in 12-hour, am/pm format (logout
  1142.                        time is approximated if unavailable).
  1143.            %T          The time, in 24-hour format. (but see
  1144.                        the "ampm" shell variable below).
  1145.            %D          The day in dd format.
  1146.            %w          The month in <Mon> format.
  1147.            %W          The month in mm format.
  1148.            %Y          The year in yy format.
  1149.  
  1150.      The %M and %m sequences are only available on systems that store the
  1151.      remote hostname in /etc/utmp. If _✓w_✓h_✓o is not set, the format defaults to
  1152.      "%n has %a %l from %m.", or "%n has %a %l." on systems that don't store
  1153.      the hostname.
  1154.  
  1155.    16. TIMED EVENT LIST
  1156.      _✓T_✓c_✓s_✓h now supports a scheduled-event list through the use of the command
  1157.      _✓s_✓c_✓h_✓e_✓d. This command gives the user a mechanism by which to arrange for
  1158.      other commands to be executed at given times.  An event is added to the
  1159.      scheduled-event list by saying
  1160.  
  1161.            > sched [+]hh:mm <command>
  1162.  
  1163.      as in
  1164.  
  1165.            > sched 11:00 echo It\'s eleven o\'clock.
  1166.  
  1167.      This will make an entry in the list at 11am for the echo command to be
  1168.      run with the given arguments.  The time may be specified in either abso-
  1169.      lute or relative time, and absolute times may have a morning/afternoon
  1170.      specification as well, using "am" or "pm." For example,
  1171.  
  1172.            > sched +2:15 /usr/lib/uucp/uucico -r1 -sother
  1173.            > sched 5pm set prompt='[%h] It\'s after 5; go home: >'
  1174.            > sched +3am echo This syntax doesn\'t work.
  1175.            Relative time inconsistent with am/pm.
  1176.            >
  1177.  
  1178.      Note that _✓t_✓c_✓s_✓h will complain if you try to make faulty time specifica-
  1179.      tions.
  1180.  
  1181.      Printing the current time-event list is accomplished by giving the _✓s_✓c_✓h_✓e_✓d
  1182.      command with no arguments:
  1183.  
  1184.            > sched
  1185.                 1  Wed Apr  4 15:42  /usr/lib/uucp/uucico -r1 -sother
  1186.                 2  Wed Apr  4 17:00  set prompt=[%h] It's after 5; go home: >
  1187.            >
  1188.  
  1189.      There is also a mechanism by which the user can remove an item from the
  1190.      list:
  1191.  
  1192.            > sched --3
  1193.            Usage for delete: sched -<item#>.
  1194.            > sched -3
  1195.            Not that many scheduled events.
  1196.            > sched -2
  1197.            > sched
  1198.                 1  Wed Apr  4 15:42  /usr/lib/uucp/uucico -r1 -sother
  1199.            >
  1200.  
  1201.      All commands specified on the scheduled-event list will be executed just
  1202.      prior to printing the first prompt immediately following the time when
  1203.      the command is to be run.  Hence, it is possible to miss the exact time
  1204.      when the command is to be run, but _✓t_✓c_✓s_✓h will definitely get around to
  1205.      all commands which are overdue at its next prompt.  Scheduled-event list
  1206.      items which come due while _✓t_✓c_✓s_✓h is waiting for user input will be exe-
  1207.      cuted immediately.  In no case, however, will normal operation of
  1208.      already-running commands be interrupted so that a scheduled-event list
  1209.      element may be run.
  1210.  
  1211.      This mechanism is similar to, but not the same as, the _✓a_✓t(1) command on
  1212.      some Unix systems.  Its major disadvantage is that it does not neces-
  1213.      sarily run a command at exactly the specified time (but only if another
  1214.      command is already being run).  Its major advantage is that commands
  1215.      which run directly from _✓t_✓c_✓s_✓h, as sched commands are, have access to
  1216.      shell variables and other structures.  This provides a mechanism for
  1217.      changing one's working environment based on the time of day.
  1218.  
  1219.    17. BUILTIN FOR ls -F
  1220.      There is a new builtin command called _✓l_✓s-_✓F which does the same thing as
  1221.      the command "ls -F".  If the shell variable _✓s_✓h_✓o_✓w_✓d_✓o_✓t_✓s has been set, it
  1222.      acts like "ls -aF". If _✓s_✓h_✓o_✓w_✓d_✓o_✓t_✓s is equal to "-A", then _✓l_✓s-_✓F acts like
  1223.      "ls -AF". Ls-F works like ls, only it is generally faster, since it does
  1224.      not need to fork and exec, and safer against Trojan horses if the user
  1225.      has `.' in the execution path. If other switches are passed to _✓l_✓s-_✓F,
  1226.      then the normal ls is executed. Aliasing ls to ls-F provides a fast
  1227.      alternative way of listing files.  Note that on non BSD machines, where
  1228.      ls -C is not the default, _✓l_✓s-_✓F, behaves like ls -CF.
  1229.  
  1230.      _✓l_✓s-_✓F appends the following characters depending on the file type:
  1231.  
  1232.            =           File is an AF_UNIX domain socket.
  1233.                        [if system supports sockets]
  1234.            |           File is a named pipe (fifo)
  1235.                        [if system supports named pipes]
  1236.            %           File is a character device
  1237.            #           File is a block device
  1238.            /           File is a directory
  1239.            *           File is executable
  1240.            +           File is a hidden directory [aix]
  1241.                        or context dependent [hpux]
  1242.            :           File is network special [hpux]
  1243.  
  1244.      On systems that support symbolic links the variable _✓l_✓i_✓s_✓t_✓l_✓i_✓n_✓k_✓s controls
  1245.      the way symbolic links are identified. If _✓l_✓i_✓s_✓t_✓l_✓i_✓n_✓k_✓s is not set then the
  1246.      character '@' is appended to the file. If _✓l_✓i_✓s_✓t_✓l_✓i_✓n_✓k_✓s is set then the fol-
  1247.      lowing characters are appended to the filename depending on the type of
  1248.      file the symbolic links points to:
  1249.  
  1250.            @           File is a symbolic link pointing
  1251.                        to a non-directory
  1252.            >           File is a symbolic link pointing
  1253.                        to a directory
  1254.            &           File is a symbolic link pointing
  1255.                        to nowhere
  1256.  
  1257.      While setting _✓l_✓i_✓s_✓t_✓l_✓i_✓n_✓k_✓s can be helpful while navigating around the file
  1258.      system, it slows down _✓l_✓s-_✓F and it causes mounting of file systems if the
  1259.      symbolic links point to an NFS auto-mounted partition.
  1260.  
  1261.    18. GLOBBING SYNTAX ADDITIONS
  1262.      The syntax for any character in a range (for example ".[a-z]*") has been
  1263.      extended so as to conform with standard Unix regular expression syntax
  1264.      (see _✓e_✓d(1)).  Specifically, after an open bracket ("["), if the first
  1265.      character is a caret ("^") then the character matched will be any not in
  1266.      the range specified.  For example:
  1267.  
  1268.            > cd ~
  1269.            > echo .[a-z]*
  1270.            .cshrc .emacs .login .logout .menuwmrc
  1271.            > echo .[^.]*
  1272.            .Xdefaults .Xinit .cshrc .emacs .login .logout .menuwmrc
  1273.            >
  1274.  
  1275.      Note that the second form includes .Xdefaults and .Xinit because 'X'
  1276.      (and all the lower case letters) are outside of the range of a single
  1277.      '.'.
  1278.  
  1279.      Also the ability to negate a globbing pattern has been added:
  1280.  
  1281.            > echo *
  1282.            foo foobar bar barfoo
  1283.            > echo ^foo*
  1284.            bar barfoo
  1285.  
  1286.      Note that this does not work correctly if the expression does not have
  1287.      any wildcard characters (?*[]) or if the expression has braces {}.
  1288.  
  1289.    19. NEW ENVIRONMENT AND SHELL VARIABLES
  1290.      On startup, _✓t_✓c_✓s_✓h now automatically initializes the environment variable
  1291.      _✓H_✓O_✓S_✓T to the name of the machine that it is running on.  It does this by
  1292.      doing a _✓g_✓e_✓t_✓h_✓o_✓s_✓t_✓n_✓a_✓m_✓e(2) system call, and setting _✓H_✓O_✓S_✓T to the result.
  1293.  
  1294.      _✓T_✓c_✓s_✓h also initializes the environment variable _✓H_✓O_✓S_✓T_✓T_✓Y_✓P_✓E to a symbolic
  1295.      name for the type of computer that it is running on.  This is useful
  1296.      when sharing a single physical directory between several types of
  1297.      machines (running NFS, for instance).  For example, if the following is
  1298.      in ._✓l_✓o_✓g_✓i_✓n:
  1299.  
  1300.         set path = (~/bin.$HOSTTYPE /usr/ucb /bin /usr/bin /usr/games .)
  1301.  
  1302.      and the user has directories named "bin._✓m_✓a_✓c_✓h_✓i_✓n_✓e" (where _✓m_✓a_✓c_✓h_✓i_✓n_✓e is a
  1303.      name from the list below), then the user can have the same programs com-
  1304.      piled for different machines in the appropriate "bin._✓m_✓a_✓c_✓h_✓i_✓n_✓e" direc-
  1305.      tories and _✓t_✓c_✓s_✓h will run the binary for the correct machine.
  1306.  
  1307.      The current possible values are:
  1308.  
  1309.      _✓a_✓i_✓x_✓3_✓7_✓0         an IBM 370, running aix
  1310.      _✓a_✓i_✓x_✓E_✓S_✓A         an IBM ESA, running aix
  1311.      _✓a_✓l_✓l_✓i_✓a_✓n_✓t        an Alliant FX series
  1312.      _✓a_✓m_✓d_✓a_✓h_✓l         an Amdahl running uts 2.1
  1313.      _✓a_✓m_✓i_✓g_✓a          an amiga running amix 2.02
  1314.      _✓a_✓p_✓o_✓l_✓l_✓o         an Apollo running DomainOS
  1315.      _✓a_✓t_✓t_✓3_✓b_✓1_✓5        an AT&T 3b15
  1316.      _✓a_✓t_✓t_✓3_✓b_✓2         an AT&T 3b2
  1317.      _✓a_✓t_✓t_✓3_✓b_✓2_✓0        an AT&T 3b20
  1318.      _✓a_✓t_✓t_✓3_✓b_✓5         an AT&T 3b5
  1319.      _✓b_✓a_✓l_✓a_✓n_✓c_✓e        a Sequent Balance (32000 based)
  1320.      _✓b_✓u_✓t_✓t_✓e_✓r_✓f_✓l_✓y      a BBN Computer Butterfly 1000
  1321.      _✓c_✓o_✓n_✓v_✓e_✓x         a Convex
  1322.      _✓c_✓r_✓a_✓y           a Cray running Unicos
  1323.      _✓d_✓e_✓c_✓s_✓t_✓a_✓t_✓i_✓o_✓n     a DecStation XXXX
  1324.      _✓e_✓t_✓a_✓1_✓0          an ETA 10 running SVR3
  1325.      _✓g_✓o_✓u_✓l_✓d-_✓n_✓p_✓1      a Gould NP1
  1326.      _✓h_✓k_✓6_✓8           a Heurikon HK68 running Uniplus+ 5.0
  1327.      _✓h_✓p_✓3_✓0_✓0          an HP 9000, series 300, running mtXinu
  1328.      _✓h_✓p_✓8_✓0_✓0          an HP 9000, series 800, running mtXinu
  1329.      _✓h_✓p_✓9_✓0_✓0_✓0_✓s_✓3_✓0_✓0     an HP 9000, series 300, running hpux
  1330.      _✓h_✓p_✓9_✓0_✓0_✓0_✓s_✓5_✓0_✓0     an HP 9000, series 500, running hpux
  1331.      _✓h_✓p_✓9_✓0_✓0_✓0_✓s_✓7_✓0_✓0     an HP 9000, series 700, running hpux
  1332.      _✓h_✓p_✓9_✓0_✓0_✓0_✓s_✓8_✓0_✓0     an HP 9000, series 800, running hpux
  1333.      _✓h_✓p             an HP, running hpux
  1334.      _✓i_✓3_✓8_✓6           an Intel 386, generic
  1335.      _✓i_✓3_✓8_✓6-_✓m_✓a_✓c_✓h      an Intel 386, running mach
  1336.      _✓i_✓n_✓t_✓e_✓l_✓3_✓8_✓6       an Intel 386, running INTEL's SVR3
  1337.      _✓i_✓r_✓i_✓s_✓3_✓d         a Silicon Graphics Iris 3000
  1338.      _✓i_✓r_✓i_✓s_✓4_✓d         a Silicon Graphics Iris 4D
  1339.      _✓i_✓s_✓c_✓3_✓8_✓6         an Intel 386, running ISC
  1340.      _✓m_✓8_✓8_✓k           an mc88000 CPU machine
  1341.      _✓m_✓a_✓c_✓2           an Apple Computer Macintosh II, running AUX
  1342.      _✓m_✓a_✓s_✓s_✓c_✓o_✓m_✓p       a Concurrent (Masscomp), running RTU
  1343.      _✓m_✓i_✓n_✓i_✓x_✓3_✓8_✓6       an i386 running minix
  1344.      _✓m_✓i_✓n_✓i_✓x          a mac or an amiga running minix
  1345.      _✓m_✓i_✓p_✓s           another mips CPU
  1346.      _✓m_✓u_✓l_✓t_✓i_✓m_✓a_✓x       an Encore Computer Corp. Multimax (32000 based)
  1347.      _✓n_✓e_✓w_✓s           a Sony NEWS 800 or 1700 workstation
  1348.      _✓n_✓e_✓w_✓s__✓m_✓i_✓p_✓s      a NeWS machine with mips CPU
  1349.      _✓n_✓d_✓5_✓0_✓0          a Norsk Data ND 500/5000 running Ndix
  1350.      _✓n_✓s_✓3_✓2_✓0_✓0_✓0        an NS32000 CPU machine
  1351.      _✓n_✓e_✓x_✓t           a NeXT computer
  1352.      _✓p_✓f_✓a_✓5_✓0          a PFU/Fujitsu A-xx computer
  1353.      _✓p_✓s_✓2            an IBM PS/2, running aix
  1354.      _✓p_✓t_✓x            a Sequent Symmetry running DYNIX/ptx (386/486 based)
  1355.      _✓p_✓y_✓r_✓a_✓m_✓i_✓d        a Pyramid Technology computer (of any flavor)
  1356.      _✓r_✓s_✓6_✓0_✓0_✓0         an IBM RS6000, running aix
  1357.      _✓r_✓t             an IBM PC/RT, running BSD (AOS 4.3) or mach
  1358.      _✓r_✓t_✓p_✓c           an IBM PC/RT, running aix
  1359.      _✓s_✓c_✓o_✓3_✓8_✓6         an Intel 386, running SCO
  1360.      _✓s_✓t_✓e_✓l_✓l_✓a_✓r        a stellar running stellix
  1361.      _✓s_✓u_✓n            a Sun workstation of none of the above types
  1362.      _✓s_✓u_✓n_✓2           a Sun Microsystems series 2 workstation (68010 based)
  1363.      _✓s_✓u_✓n_✓3           a Sun Microsystems series 3 workstation (68020 based)
  1364.      _✓s_✓u_✓n_✓3_✓8_✓6_✓i        a Sun Microsystems 386i workstation (386 based)
  1365.      _✓s_✓u_✓n_✓4           a Sun Microsystems series 4 workstation (SPARC based)
  1366.      _✓s_✓y_✓m_✓m_✓e_✓t_✓r_✓y       a Sequent Symmetry running DYNIX 3 (386/486 based)
  1367.      _✓t_✓a_✓h_✓o_✓e          a tahoe running 4BSD
  1368.      _✓t_✓i_✓t_✓a_✓n          an Stardent Titan
  1369.      _✓u_✓n_✓i_✓x_✓p_✓c         an UNIX/PC running SVR1 att7300 aka att3b1
  1370.      _✓v_✓a_✓x            a Digital Equipment Corp. Vax (of any flavor)
  1371.      _✓v_✓i_✓s_✓t_✓r_✓a_✓8_✓0_✓0      a Stardent Vistra 800 running SVR4
  1372.  
  1373.      (The names of the machines are usually trade marks of the corresponding
  1374.      companies.)
  1375.  
  1376.      _✓T_✓c_✓s_✓h also initializes the shell variables _✓u_✓i_✓d and _✓g_✓i_✓d to the value of
  1377.      the current real user ID/GID.  This is useful for telling what
  1378.      user/group the shell is running as. Under Domain/OS _✓t_✓c_✓s_✓h will also set
  1379.      _✓o_✓i_✓d indicating the current real organization id.
  1380.  
  1381.    20. COMMANDS FOR DEBUGGING
  1382.      Only two such commands are available at this point, both concerned with
  1383.      testing termcap entries.
  1384.      _✓t_✓e_✓l_✓l_✓t_✓c tells you, politely, what _✓t_✓c_✓s_✓h thinks of your terminal, and _✓s_✓e_✓t_✓t_✓c
  1385.      `cap' `value' tells _✓t_✓c_✓s_✓h to believe that the termcap capability `cap' (
  1386.      as defined in _✓t_✓e_✓r_✓m_✓c_✓a_✓p(5) ) has the value `value'. No checking for sanity
  1387.      is performed, so beware of improper use.
  1388.  
  1389.      Note that Concept terminal users may have to "settc xn no" to get proper
  1390.      wrapping at the rightmost column.
  1391.  
  1392.    21. SEARCHING FOR THE VISUAL HISTORY
  1393.      Four new editor functions have been added in emacs mode: Two of them,
  1394.      history-search-backward, bound to M-p (and M-P), and history-search-
  1395.      forward, bound to M-n (and M-N), implement a conventional search mechan-
  1396.      ism, while the other two, i-search-back and i-search-fwd, both unbound
  1397.      by default, implement the emacs-style incremental search.
  1398.  
  1399.      History-search-backward (history-search-forward) searches backward (for-
  1400.      ward) through the history list for previous (next) occurrence of the
  1401.      beginning of the input buffer as a command.  That is, if the user types:
  1402.  
  1403.            > echo foo
  1404.            foo
  1405.            > ls
  1406.            filea     fileb
  1407.            > echo bar
  1408.            bar
  1409.            >
  1410.  
  1411.      and then types "echo<ESC>p", the shell will place "echo bar" in the
  1412.      editing buffer.  If another _✓M-_✓p was entered, the editing buffer would
  1413.      change to "echo foo".  This capability is compatible with the plain
  1414.      visual history; if the user were to then enter ^_✓P the editing buffer
  1415.      would be changed to "ls". The pattern used to search through the history
  1416.      is defined by the characters from the beginning of the line up to the
  1417.      current cursor position and may contain a shell globbing pattern. Suc-
  1418.      cessive history searches use the same pattern.
  1419.  
  1420.      When the incremental search functions are used, a prompt - "bck:" or
  1421.      "fwd:", depending on the chosen direction - appears, and characters
  1422.      typed are appended to the search pattern.  The matching command line is
  1423.      placed in the editing buffer, with the cursor positioned at the point
  1424.      where the pattern was found (the incremental search will also do search-
  1425.      ing within a command line).  If the search fails, the terminal bell is
  1426.      rung, and the ':' in the prompt is changed to '?'.
  1427.  
  1428.      If these functions are bound to single characters, and one of those is
  1429.      typed again during the incremental search, the search continues in the
  1430.      corresponding direction, with the pattern unchanged; if the previous
  1431.      search failed, this will also cause it to "wrap around" the history
  1432.      list.  Finally, the following characters also have a special meaning
  1433.      during the search:
  1434.  
  1435.            Delete      (or any character bound to _✓b_✓a_✓c_✓k_✓w_✓a_✓r_✓d-_✓d_✓e_✓l_✓e_✓t_✓e-_✓c_✓h_✓a_✓r)
  1436.                        Undo the effect of the last character typed,
  1437.                        deleting a character from the pattern if appropriate.
  1438.            ^G          Abort the search, back to the last successful one
  1439.                        if previous search failed, otherwise entire search.
  1440.            ^W          Append the rest of the current word to the pattern.
  1441.            ESC         Terminate the search, leaving current line in buffer.
  1442.  
  1443.      Any other character, that isn't bound to _✓s_✓e_✓l_✓f-_✓i_✓n_✓s_✓e_✓r_✓t-_✓c_✓o_✓m_✓m_✓a_✓n_✓d, terminates
  1444.      the search, leaving the current command line in the editing buffer,
  1445.      after which _✓t_✓c_✓s_✓h interprets the character as if it was normal input -
  1446.      notably _✓R_✓e_✓t_✓u_✓r_✓n will cause the current command line to be executed.
  1447.  
  1448.      In vi mode "vi-search-fwd" (bound to '/') and "vi-search-back" (bound to
  1449.      '?') can be used to search the visual history. In command mode '/' or
  1450.      '?' followed by a shell pattern, searches the visual history for the
  1451.      pattern. The pattern can be terminated either with a _✓R_✓e_✓t_✓u_✓r_✓n, in which
  1452.      case the matched history event is placed in the command buffer or an
  1453.      _✓E_✓s_✓c_✓a_✓p_✓e, in which case the matched history event is executed. If no his-
  1454.      tory event matches the shell pattern then the bell is rung.
  1455.  
  1456.    22. BUILTIN WHICH(1)/WHERE COMMANDS
  1457.      There is now a builtin version of the _✓w_✓h_✓i_✓c_✓h(1) command.  The builtin
  1458.      version is just like the original, except that it correctly reports
  1459.      aliases peculiar to this _✓t_✓c_✓s_✓h, and builtin commands.  The only other
  1460.      difference is that the builtin runs somewhere between 10 and 100 times
  1461.      faster.  There is also a key-function interface to this command: the
  1462.      _✓w_✓h_✓i_✓c_✓h-_✓c_✓o_✓m_✓m_✓a_✓n_✓d function (normally bound to M-?), can be used anywhere on
  1463.      the command line, and will in effect do a 'which' on the command name.
  1464.  
  1465.      Similarly where will report all known instances of the command: aliases,
  1466.      builtins, as well as all references in the path.
  1467.  
  1468.    23. RESTARTING A STOPPED EDITOR
  1469.      There is another new editor function: run-fg-editor, which is bound to
  1470.      _✓M-^_✓Z.  When typed, it saves away the current input buffer, and looks for
  1471.      a stopped job with a name equal to the file name part (last element) of
  1472.      either the EDITOR or VISUAL environment variables (if not defined, the
  1473.      default names are "ed" and "vi" respectively).  If such a job is found,
  1474.      then it is restarted as if "fg %_✓n_✓a_✓m_✓e" had been typed.  This is used to
  1475.      toggle back and forth between an editor and the shell easily.  Some peo-
  1476.      ple bind this function to ^_✓Z so they can do this even more easily.
  1477.  
  1478.    24. STATUS LINE SUPPORT
  1479.      _✓T_✓c_✓s_✓h has a new builtin called _✓e_✓c_✓h_✓o_✓t_✓c that allows the user to access the
  1480.      terminal capabilities from the command line, similar to the system V
  1481.      _✓t_✓p_✓u_✓t(1).
  1482.  
  1483.            > echotc home
  1484.  
  1485.      Places the cursor at the home position and
  1486.  
  1487.            > echotc cm 3 10
  1488.  
  1489.      places the cursor at column 3 row 10.  This command replaces the _✓e_✓l and
  1490.      _✓s_✓l variables that used contain the escape sequences to begin and end
  1491.      status line changes. The command:
  1492.  
  1493.            > echo $sl this is a test $el
  1494.  
  1495.      is replaced by:
  1496.  
  1497.            > echotc ts 0; echo "this is a test"; echotc fs
  1498.  
  1499.      In addition _✓e_✓c_✓h_✓o_✓t_✓c understands the arguments _✓b_✓a_✓u_✓d, _✓l_✓i_✓n_✓e_✓s, _✓c_✓o_✓l_✓s, _✓m_✓e_✓t_✓a,
  1500.      and _✓t_✓a_✓b_✓s And prints the baud rate, the number of lines and columns, and
  1501.      "yes" or "no" depending if the terminal has tabs or a meta key.  This
  1502.      can be useful in determining how terse the output of commands will be
  1503.      depending on the baud rate, or setting limits to commands like history
  1504.      to the highest number so that the terminal does not scroll:
  1505.  
  1506.            > set history=`echotc lines`
  1507.            > @ history--
  1508.  
  1509.      Note: Termcap strings may contain wildcard characters, and echoing them
  1510.      will not work correctly. The suggested method of setting shell variables
  1511.      to terminal capability strings is using double quotes, as in the follow-
  1512.      ing example that places the date in the status line:
  1513.  
  1514.            > set tosl="`echotc ts 0`"
  1515.            > set frsl="`echotc fs`"
  1516.            > echo -n "$tosl";date; echo -n "$frsl"
  1517.  
  1518.      _✓E_✓c_✓h_✓o_✓t_✓c accepts two flags. The flag -_✓v enables verbose messages and the
  1519.      flag -_✓s ignores any errors and returns the empty string if the capabil-
  1520.      ity is not found.
  1521.  
  1522.  
  1523.    25. EXECUTION OF A COMMAND AFTER CHANGING THE CURRENT WORKING DIRECTORY
  1524.  
  1525.      _✓T_✓c_✓s_✓h now supports a special alias, _✓c_✓w_✓d_✓c_✓m_✓d, which if set holds a command
  1526.      that will be executed after changing the value of $cwd.  For example, if
  1527.      the user is running on an X window system _✓x_✓t_✓e_✓r_✓m(_✓1), and a re-parenting
  1528.      window manager that supports title bars such as _✓t_✓w_✓m(_✓1) _✓a_✓n_✓d _✓h_✓a_✓s _✓d_✓o_✓n_✓e:
  1529.  
  1530.            > alias cwdcmd  'echo -n "^[]2;${HOST}:$cwd ^G"'
  1531.  
  1532.      then the shell will change the title of the running _✓x_✓t_✓e_✓r_✓m(_✓1) to be the
  1533.      name of the host, a colon, and the full current working directory. A
  1534.      more fancy way to do that is:
  1535.  
  1536.            > alias cwdcmd 'echo -n "^[]2;${HOST}:$cwd^G^[]1;${HOST}^G"'
  1537.  
  1538.      This will put the hostname and working directory on the title bar but
  1539.      only the hostname in the icon manager menu.  Note that if a user defines
  1540.      _✓c_✓w_✓d_✓c_✓m_✓d to contain a _✓c_✓d, _✓p_✓u_✓s_✓h_✓d, or _✓p_✓o_✓p_✓d, command, an infinite loop may
  1541.      result.  In this case, it is the author's opinion that said user will
  1542.      get what he deserves.
  1543.  
  1544.    26. NATIVE LANGUAGE SYSTEM
  1545.      _✓T_✓c_✓s_✓h is eight bit clean (if so compiled, see the description of the _✓v_✓e_✓r_✓-
  1546.      _✓s_✓i_✓o_✓n shell variable below), and will thus support character sets needing
  1547.      this capability.  The _✓t_✓c_✓s_✓h support for NLS differs depending on whether
  1548.      it was compiled to use the system's NLS (again, see the _✓v_✓e_✓r_✓s_✓i_✓o_✓n vari-
  1549.      able) or not.  In either case, the default for character classification
  1550.      (i.e. which characters are printable etc) and sorting is 7-bit ascii,
  1551.      and any setting or unsetting of the LANG or LC_CTYPE environment vari-
  1552.      ables will cause a check for possible changes in these respects.
  1553.  
  1554.      When using the system's NLS, the _✓s_✓e_✓t_✓l_✓o_✓c_✓a_✓l_✓e C library function will be
  1555.      called to determine appropriate character classification and sorting -
  1556.      this function will typically examine the LANG and LC_CTYPE variables for
  1557.      this purpose (refer to the system documentation for further details).
  1558.      Otherwise, NLS will be simulated, by assuming that the ISO 8859-1 char-
  1559.      acter set is used whenever either of the LANG and LC_CTYPE variables are
  1560.      set, regardless of their values. Sorting is not affected for the simu-
  1561.      lated NLS.
  1562.  
  1563.      In addition, with both real and simulated NLS, all printable characters
  1564.      in the range \200-\377, i.e. those that have M-<char> bindings, are
  1565.      automatically rebound to _✓s_✓e_✓l_✓f-_✓i_✓n_✓s_✓e_✓r_✓t-_✓c_✓o_✓m_✓m_✓a_✓n_✓d (the corresponding binding
  1566.      for the escape+<char> sequence, if any, is left alone).  This automatic
  1567.      rebinding is inhibited if the NOREBIND environment variable is set -
  1568.      this may be useful for the simulated NLS, or a primitive real NLS which
  1569.      assumes full ISO 8859-1 (otherwise all M-<char> bindings in the range
  1570.      \240-\377 will effectively be undone in these cases).  Explicitly
  1571.      rebinding the relevant keys, using _✓b_✓i_✓n_✓d_✓k_✓e_✓y, is of course still possible.
  1572.  
  1573.      Unknown characters (i.e. those that are neither printable nor control
  1574.      characters) will be printed using the \nnn format.  If the tty is not in
  1575.      8 bit mode, other 8 bit characters will be printed by converting them to
  1576.      ascii and using standout mode.  _✓T_✓c_✓s_✓h will never change the 7/8 bit mode
  1577.      of the tty, and will track user-initiated settings for this - i.e. it
  1578.      may be necessary for NLS users (or, for that matter, those that want to
  1579.      use a Meta key) to explicitly set the tty in 8 bit mode through the
  1580.      appropriate _✓s_✓t_✓t_✓y(1) command in e.g. the .login file.
  1581.  
  1582.  
  1583.  
  1584.  
  1585.    27. AUTOMATIC PROCESS TIME REPORTING
  1586.      Automatic process time reporting is a feature that exists in _✓c_✓s_✓h, but it
  1587.      is usually not documented. In addition _✓t_✓c_✓s_✓h provides a slightly enriched
  1588.      syntax. Process time reports are controlled via the _✓t_✓i_✓m_✓e shell variable.
  1589.      The first word of the _✓t_✓i_✓m_✓e variable indicates the minimum number of CPU
  1590.      seconds the process has to consume before a time report is produced. The
  1591.      optional second word controls the format of the report.  The following
  1592.      sequences are available for the format specification:
  1593.  
  1594.            %U          The time the process spent in user mode
  1595.                        in cpu seconds.
  1596.            %S          The time the process spent in kernel mode
  1597.                        in cpu seconds.
  1598.            %E          The elapsed time in seconds.
  1599.            %P          The CPU percentage computed as (%U + %S) / %E.
  1600.  
  1601.      The following sequences are supported only in systems that have the BSD
  1602.      resource limit functions.
  1603.  
  1604.            %W          Number of times the process was swapped.
  1605.            %X          The average amount in (shared) text space used
  1606.                        in Kbytes.
  1607.            %D          The average amount in (unshared) data/stack
  1608.                        space used in Kbytes.
  1609.            %K          The total space used (%X + %D) in Kbytes.
  1610.            %M          The maximum memory the process had in use at
  1611.                        any time in Kbytes.
  1612.            %F          The number of major page faults (page needed to
  1613.                        be brought from disk).
  1614.            %R          The number of minor page faults.
  1615.            %I          The number of input operations.
  1616.            %O          The number of output operations.
  1617.            %r          The number of socket messages received.
  1618.            %s          The number of socket messages sent.
  1619.            %k          The number of signals received.
  1620.            %w          Number of voluntary context switches (waits).
  1621.            %c          Number of involuntary context switches.
  1622.  
  1623.      The default time format is "%Uu %Ss %E %P %X+%Dk %I+%Oio %Fpf+%Ww" for
  1624.      systems that support resource usage reporting and "%Uu %Ss %E %P" for
  1625.      systems that do not.
  1626.  
  1627.      For Sequent's DYNIX/ptx %X, %D, %K, %r and %s are not supported.  How-
  1628.      ever, the following additional sequences are available.
  1629.  
  1630.            %Y          The number of system calls performed.
  1631.            %Z          The number of pages which are zero-filled
  1632.                        on demand.
  1633.            %i          The number of times a process' resident
  1634.                        set size was increased by the kernel.
  1635.            %d          The number of times a process' resident
  1636.                        set size was decreased by the kernel.
  1637.            %l          The number of read system calls performed.
  1638.            %m          The number of write system calls performed.
  1639.            %p          the number of reads from raw disk devices.
  1640.            %q          the number of writes to raw disk devices.
  1641.  
  1642.      The default time format for Sequent's DYNIX/ptx is "%Uu %Ss $E %P
  1643.      %I+%Oio %Fpf+%Ww". Also note that the CPU percentage can be higher than
  1644.      100% on multi-processors.
  1645.  
  1646.    28. OS/DEPENDENT BUILTIN SUPPORT
  1647.  
  1648.      _✓T_✓R_✓A_✓N_✓S_✓P_✓A_✓R_✓E_✓N_✓T _✓C_✓O_✓M_✓P_✓U_✓T_✓I_✓N_✓G _✓F_✓A_✓C_✓I_✓L_✓I_✓T_✓Y
  1649.  
  1650.  
  1651.      On systems that support TCF (aix-ibm370, aix-ps2) the following builtins
  1652.      have been added:
  1653.  
  1654.      getspath  Print the current system execution path.
  1655.  
  1656.      setspath LOCAL|<site>|<cpu> ...
  1657.                Set the current execution path.
  1658.  
  1659.  
  1660.      getxvers  Print the current experimental version prefix.
  1661.  
  1662.  
  1663.      setxvers [<string>]
  1664.                If the optional string is ommited, any experimental version
  1665.                prefix is removed.  Otherwise the experimental version prefix
  1666.                is set to string.
  1667.  
  1668.  
  1669.      migrate [-<site>] <pid>|%<jobid> ...
  1670.      migrate -<site>
  1671.                The first form migrates the process or job to the site speci-
  1672.                fied or the default site determined by the system path.  The
  1673.                second form, is equivalent to 'migrate -<site> $$', i.e.
  1674.                migrates the current process to the site specified. Note:
  1675.                migrating _✓t_✓c_✓s_✓h itself can cause unexpected behavior, since the
  1676.                shell does not like to lose its tty.
  1677.  
  1678.  
  1679.      In addition, jobs will print the site the job is executing.
  1680.  
  1681.      _✓D_✓o_✓m_✓a_✓i_✓n/_✓O_✓S _✓S_✓u_✓p_✓p_✓o_✓r_✓t
  1682.  
  1683.      inlib <shared-library> ...
  1684.           Inlib adds shared libraries to the current environment. There is no
  1685.           way to remove them...
  1686.  
  1687.      rootnode //<nodename>
  1688.           Change the name of the current rootnode. From now on, / will
  1689.           resolve to //<_✓r_✓o_✓o_✓t_✓n_✓o_✓d_✓e>
  1690.  
  1691.      ver [<systype>] [<command>]
  1692.           Without arguments, print $_✓S_✓Y_✓S_✓T_✓Y_✓P_✓E; with the <_✓s_✓y_✓s_✓t_✓y_✓p_✓e> provided, set
  1693.           _✓S_✓Y_✓S_✓T_✓Y_✓P_✓E to the one provided. Valid systypes are bsd4.3 and sys5.3.
  1694.           If a <_✓c_✓o_✓m_✓m_✓a_✓n_✓d> is argument is given, then <_✓c_✓o_✓m_✓m_✓a_✓n_✓d> is executed
  1695.           under the <_✓s_✓y_✓s_✓t_✓y_✓p_✓e> specified.
  1696.  
  1697.      _✓M_✓a_✓c_✓h
  1698.  
  1699.      setpath <path-spec> ...
  1700.           XXX: What does it do?
  1701.  
  1702.      _✓M_✓a_✓s_✓s_✓c_✓o_✓m_✓p/_✓R_✓T_✓U
  1703.  
  1704.      universe <universe-spec> ...
  1705.           Sets the current universe to the specified parameter.
  1706.  
  1707.      _✓C_✓o_✓n_✓v_✓e_✓x/_✓O_✓S
  1708.  
  1709.      warp [<universe-spec>] ...
  1710.           Without arguments prints the current value of the universe. With a
  1711.           universe argument it sets the current universe to the value of the
  1712.           argument.
  1713.  
  1714.  
  1715.  
  1716.  
  1717.    29. WINDOW SIZE TRACKING
  1718.      On systems that support SIGWINCH or SIGWINDOW, _✓t_✓c_✓s_✓h adapts to window
  1719.      resizing automatically and adjusts the environment variables LINES and
  1720.      COLUMNS if set. Also if the environment variable TERMCAP contains li#,
  1721.      and co# fields, these will be adjusted also to reflect the new window
  1722.      size.
  1723.  
  1724.  
  1725.    30. INPUT FILES
  1726.      On startup _✓t_✓c_✓s_✓h will try to source /_✓e_✓t_✓c/_✓c_✓s_✓h._✓c_✓s_✓h_✓r_✓c and then
  1727.      /_✓e_✓t_✓c/_✓c_✓s_✓h._✓l_✓o_✓g_✓i_✓n if the shell is a login shell. Then it will try to source
  1728.      $_✓H_✓O_✓M_✓E/._✓t_✓c_✓s_✓h_✓r_✓c and then $_✓H_✓O_✓M_✓E/._✓c_✓s_✓h_✓r_✓c if $_✓H_✓O_✓M_✓E/._✓t_✓c_✓s_✓h_✓r_✓c is not found. Then
  1729.      it will source $_✓H_✓O_✓M_✓E/._✓l_✓o_✓g_✓i_✓n if the shell is a login shell.  On exit _✓t_✓c_✓s_✓h
  1730.      will source first /_✓e_✓t_✓c/_✓c_✓s_✓h._✓l_✓o_✓g_✓o_✓u_✓t and then $_✓H_✓O_✓M_✓E/._✓l_✓o_✓g_✓o_✓u_✓t if the shell
  1731.      was a login shell.
  1732.  
  1733.      Note: On _✓c_✓o_✓n_✓v_✓e_✓x_✓o_✓s, _✓s_✓t_✓e_✓l_✓l_✓i_✓x and _✓I_✓N_✓T_✓E_✓L the names of the system default
  1734.      files are /_✓e_✓t_✓c/_✓c_✓s_✓h_✓r_✓c , /_✓e_✓t_✓c/_✓l_✓o_✓g_✓i_✓n and /_✓e_✓t_✓c/_✓l_✓o_✓g_✓o_✓u_✓t respectively. On the
  1735.      NeXT the names are also different: /_✓e_✓t_✓c/_✓c_✓s_✓h_✓r_✓c._✓s_✓t_✓d , /_✓e_✓t_✓c/_✓l_✓o_✓g_✓i_✓n._✓s_✓t_✓d and
  1736.      /_✓e_✓t_✓c/_✓l_✓o_✓g_✓o_✓u_✓t._✓s_✓t_✓d Finally on _✓i_✓r_✓i_✓x, _✓A/_✓U_✓X, _✓A_✓M_✓I_✓X, and the _✓c_✓r_✓a_✓y only the file
  1737.      /_✓e_✓t_✓c/_✓c_✓s_✓h_✓r_✓c is executed if the shell is a login shell.
  1738.  
  1739.  
  1740.    31. COMMAND LINE OPTIONS
  1741.      This section describes options that are either undocumented in _✓c_✓s_✓h (*)
  1742.      or present only in _✓t_✓c_✓s_✓h. (+)
  1743.  
  1744.  
  1745.      -_✓d  Load ~/.cshdirs (If _✓t_✓c_✓s_✓h was compiled with CSHDIRS enabled)(+)
  1746.  
  1747.      -_✓D_✓n_✓a_✓m_✓e[=_✓v_✓a_✓l_✓u_✓e]
  1748.          Set environment variable name to value. (Domain/OS only) (+)
  1749.  
  1750.      -_✓F  Use fork() instead of vfork() to spawn processes. (Convex/OS only)
  1751.          (+)
  1752.  
  1753.      -_✓l  Make _✓t_✓c_✓s_✓h behave like a login shell.  (+)
  1754.  
  1755.      -_✓m  Allow reading of a .cshrc that does not belong to the effective
  1756.          user. Newer versions of _✓s_✓u(_✓1) can pass that to the shell. (some ver-
  1757.          sions of csh have it) (+*)
  1758.  
  1759.      -_✓q  Make the shell accept SIGQUIT, and behave when it is used under a
  1760.          debugger.  Job control is disabled. (*)
  1761.  
  1762.  
  1763.    32. HISTORY AND VARIABLE MODIFIER ENHANCEMENTS
  1764.      _✓T_✓c_✓s_✓h accepts more than one variable modifier per variable or history
  1765.      expansion. For example, in _✓c_✓s_✓h(_✓1) the following command expands to:
  1766.  
  1767.            % set a=/usr/local/foo.bar.baz
  1768.            % echo $a:t:r:e
  1769.            foo.bar.baz:r:e
  1770.  
  1771.      but in _✓t_✓c_✓s_✓h:
  1772.  
  1773.            > set a=/usr/local/foo.bar.baz
  1774.            > echo $a:t:r:e
  1775.            bar
  1776.  
  1777.      This bug fix changes slightly the input syntax of _✓c_✓s_✓h, causing expres-
  1778.      sions of the form to have invalid syntax:
  1779.  
  1780.            > set a=/usr/local/foo.bar.baz
  1781.            > echo $a:t:$cwd
  1782.            Unknown variable modifier.
  1783.  
  1784.      Which is the correct behavior, since after the second colon a variable
  1785.      modifier is expected and `$' is found.  Expressions like this should be
  1786.      re-written as:
  1787.  
  1788.            > echo ${a:t}:$cwd
  1789.  
  1790.      _✓T_✓c_✓s_✓h can also use the _✓l and _✓u modifiers to change the case of a word.
  1791.  
  1792.      Also _✓t_✓c_✓s_✓h has an additional : character _✓a which applies the current
  1793.      modifier multiple times in the same word, in the same way _✓g applies the
  1794.      modifier once in each word:
  1795.  
  1796.            > set foo=(a:b:c d:e:f)
  1797.            > echo $foo:s/:/ /
  1798.            a b:c d:e:f
  1799.            > echo $foo:gs/:/ /
  1800.            a b:c d e:f
  1801.            > echo $foo:as/:/ /
  1802.            a b c d:e:f
  1803.            > echo $foo:ags/:/ /
  1804.            a b c d e f
  1805.  
  1806.      The _✓c_✓s_✓h expert will notice in the above example another _✓t_✓c_✓s_✓h enhance-
  1807.      ment. In _✓c_✓s_✓h the _✓s modifier does not work for variables.
  1808.  
  1809.      The _✓a character works correctly with other modifiers, for example:
  1810.  
  1811.            > echo $host
  1812.            tesla.ee.cornell.edu
  1813.            > echo $host:r
  1814.            tesla.ee.cornell
  1815.            > echo $host:ar
  1816.            tesla
  1817.  
  1818.      _✓N_✓o_✓t_✓e: The _✓a character causes a modifier to be applied to a word repeat-
  1819.      edly until the modifier fails. This can lead to an infinite loop in the
  1820.      current implementation when used with the _✓s modifier. For example
  1821.      :as/f/ff/ will never terminate. This behavior might change in the
  1822.      future.
  1823.  
  1824.  
  1825.    33. PROGRAMMABLE COMPLETION
  1826.      The new _✓c_✓o_✓m_✓p_✓l_✓e_✓t_✓e and _✓u_✓n_✓c_✓o_✓m_✓p_✓l_✓e_✓t_✓e builtins can change the behavior of the
  1827.      listing and file-completion in tcsh. For example some commands like _✓c_✓d,
  1828.      _✓p_✓u_✓s_✓h_✓d, _✓p_✓o_✓p_✓d , _✓m_✓k_✓d_✓i_✓r(_✓1), _✓r_✓m_✓d_✓i_✓r(_✓1) accept only directories as arguments.
  1829.      Normally _✓t_✓c_✓s_✓h when asked to list or complete an argument for those com-
  1830.      mands takes into account all the files and not only directories. This
  1831.      behavior can be changed by telling _✓t_✓c_✓s_✓h that these commands only expect
  1832.      directory arguments:
  1833.  
  1834.      > complete cd 'n/*/d/'
  1835.  
  1836.      The above command tells _✓t_✓c_✓s_✓h to complete any following word with a
  1837.      directory.
  1838.  
  1839.      The syntax for the _✓c_✓o_✓m_✓p_✓l_✓e_✓t_✓e and _✓u_✓n_✓c_✓o_✓m_✓p_✓l_✓e_✓t_✓e builtins is:
  1840.  
  1841.      _✓c_✓o_✓m_✓p_✓l_✓e_✓t_✓e [<_✓c_✓o_✓m_✓m_✓a_✓n_✓d-_✓p_✓a_✓t_✓t_✓e_✓r_✓n> [<_✓c_✓o_✓m_✓p_✓l_✓e_✓t_✓i_✓o_✓n-_✓a_✓r_✓g_✓u_✓m_✓e_✓n_✓t>]]
  1842.      _✓u_✓n_✓c_✓o_✓m_✓p_✓l_✓e_✓t_✓e <_✓c_✓o_✓m_✓m_✓a_✓n_✓d-_✓p_✓a_✓t_✓t_✓e_✓r_✓n>
  1843.  
  1844.      Completion arguments are matched in turn from left to right and the
  1845.      first successful match is returned.  There are three different comple-
  1846.      tion arguments, modeled after the _✓s_✓e_✓d(_✓1) substitute command and they are
  1847.      of the form:
  1848.  
  1849.      <command>/<match-pattern>/<complete-action>/[<suffix>|/]
  1850.  
  1851.      The five commands available are:
  1852.  
  1853.      p    This specifies position-dependent completion. The matching pattern
  1854.           is a numeric range similar to the one used to index shell vari-
  1855.           ables. If the current word is within that range, then the comple-
  1856.           tion action is taken. For example:
  1857.  
  1858.           > complete cd 'p/1/d/'
  1859.  
  1860.           completes only the first argument of 'cd' with a directory. A spe-
  1861.           cial useful case of position-dependent completion can be used to
  1862.           disambiguate command completion:
  1863.  
  1864.           > set autolist
  1865.           > co[TAB]
  1866.           complete compress
  1867.           > complete -co* 'p/0/(complete)/'
  1868.           > co[TAB]
  1869.           > complete _
  1870.  
  1871.           The above command tells the completion mechanism to match any word
  1872.           on position 0, that matches the pattern _✓c_✓o* . If a match is found,
  1873.           the word is replaced with the literal pattern "complete". The lead-
  1874.           ing '-' in the pattern signifies that this completion is to be used
  1875.           only with ambiguous commands.
  1876.  
  1877.      n,N  This command specifies next-word completions. The matching pattern
  1878.           in this case is a shell pattern that must match the previous word
  1879.           on the command line (_✓n), or the word before that (_✓N). For example:
  1880.  
  1881.           > complete find 'n/-user/u/'
  1882.  
  1883.           Here the argument of the find command which follows the -user argu-
  1884.           ment is completed from the list of users.
  1885.  
  1886.      c,C  The last two completion commands complete the current word. The
  1887.           matching pattern in this case must match the prefix of the current
  1888.           word. For example:
  1889.  
  1890.           > complete cc 'c/-I/d/'
  1891.  
  1892.           completes the the word containing -I from the list of directories.
  1893.           While `c' discards the matched prefix, `C' keeps it and applies the
  1894.           completion using it.
  1895.  
  1896.  
  1897.      So far the _✓d, _✓u, (_✓w_✓o_✓r_✓d) completion actions have been mentioned. The com-
  1898.      plete list of completion actions are:
  1899.  
  1900.            C           Complete completions
  1901.            S           Complete signals
  1902.            a           Complete aliases
  1903.            b           Complete binding
  1904.            c           Complete command
  1905.            d           Complete directory
  1906.            e           Complete environment variable
  1907.            f           Complete file or path component
  1908.            j           Complete jobs
  1909.            l           Complete limits
  1910.            n           Complete nothing
  1911.            s           Complete shell variable
  1912.            v           Complete any variable
  1913.            u           Complete username
  1914.            x           Explain what argument when listing is requested.
  1915.            $var        Complete using words from variable
  1916.            (...)       Complete using words from list
  1917.            `...`       Complete evaluating word list from the output of command.
  1918.  
  1919.      All the above completion actions, except _✓x, $_✓v_✓a_✓r, (...), and `...` can
  1920.      have an additional shell pattern which must match the files to be com-
  1921.      pleted, separated from the action with a ':'. The '_✓x' completion action
  1922.      instead expects the explanation string specified this way.  For example,
  1923.      in the C compiler, it makes sense to complete only files that the com-
  1924.      piler understands:
  1925.  
  1926.      > complete cc 'n/*/f:*.[cao]/'
  1927.  
  1928.      It is also useful to exclude files from the completion list. Normally
  1929.      _✓t_✓c_✓s_✓h will expand the following command:
  1930.  
  1931.      > set fignore=(.o)
  1932.      > ls
  1933.      foo.c foo.o
  1934.      > vi f[TAB]
  1935.      > vi foo.c
  1936.      > rm f[TAB]
  1937.      > rm foo.c
  1938.  
  1939.      A better way to do this is to use the _✓c_✓o_✓m_✓p_✓l_✓e_✓t_✓e builtin to protect pre-
  1940.      cious files:
  1941.  
  1942.      > complete rm 'n/*/f:^*.{c,h,cc,C,tex,1,man,l,y}/'
  1943.      > ls
  1944.      foo.c foo.o
  1945.      > vi f[TAB]
  1946.      > vi foo.c
  1947.      > rm f[TAB]
  1948.      > rm foo.o
  1949.  
  1950.      Note that _✓f_✓i_✓g_✓n_✓o_✓r_✓e is not used when a shell pattern is specified in a
  1951.      completion action.
  1952.  
  1953.      Other commands don't expect files as arguments, so the completion buil-
  1954.      tin can be used to change the list of items to be completed:
  1955.  
  1956.        > complete man      'n/*/c/'            # complete commands
  1957.        > complete which    'n/*/c/'
  1958.        > complete dbx      'p/2/(core)/' 'n/*/c/'
  1959.        > complete alias    'p/1/a/'            # complete aliases
  1960.        > complete set      'p/1/s/'            # complete variables
  1961.        > complete finger   'p/1/u/'            # complete user-names
  1962.  
  1963.      Note that in the _✓d_✓b_✓x example, the positional completion is specified
  1964.      before the next word completion. Since completions are evaluated from
  1965.      left to right, if the next word completion was specified first it would
  1966.      always match and the positional completion would never be executed. This
  1967.      is a common mistake when defining a completion.
  1968.  
  1969.      In some cases the list needs to be customized or dynamically generated.
  1970.  
  1971.      > set hostnames=(prep.ai.mit.edu tesla.ee.cornell.edu)
  1972.      > complete rlogin 'p/1/$hostnames/'
  1973.  
  1974.      Consider a complex example using matching patterns to direct argument
  1975.      dependent completions:
  1976.      > complete find 'n/-fstype/(nfs 4.2)/' 'n/-name/f/' \
  1977.                      'n/-type/(c b d f p l s)/' 'n/-user/u/' 'n/-exec/c/' \
  1978.                      'n/-ok/c/' 'n/-cpio/f/' 'n/-ncpio/f/' 'n/-newer/f/' \
  1979.                      'c/-/(fstype name perm prune type user nouser \
  1980.                            group nogroup size inum atime mtime ctime exec \
  1981.                            ok print ls cpio ncpio newer xdev depth)/' \
  1982.                      'n/*/d/'
  1983.  
  1984.  
  1985.      The words following the -_✓f_✓s_✓t_✓y_✓p_✓e and -_✓t_✓y_✓p_✓e arguments is to be completed
  1986.      from the lists specified.  The word following the -_✓n_✓a_✓m_✓e, -_✓c_✓p_✓i_✓o, -_✓n_✓c_✓p_✓i_✓o,
  1987.      and -_✓n_✓e_✓w_✓e_✓r arguments are to be completed using files or directory com-
  1988.      ponents.  The word following the -_✓u_✓s_✓e_✓r argument will be completed from
  1989.      the list of user names of the system, and the word following the -_✓e_✓x_✓e_✓c
  1990.      and -_✓o_✓k arguments will be completed from the list of commands.  The
  1991.      fourth line specifies how the current word will be completed if it
  1992.      starts with a -. Note that the pattern of this completion argument
  1993.      refers to the _✓c_✓u_✓r_✓r_✓e_✓n_✓t word and not to the _✓p_✓r_✓e_✓v_✓i_✓o_✓u_✓s word, like before.
  1994.      Finally the last line in the find completion matches all the remaining
  1995.      cases and requires a directory component.
  1996.  
  1997.      > cd /usr
  1998.      > set autolist
  1999.      > find [TAB]
  2000.      bin/ include/ lib/ local/ man/ src/
  2001.      > find -[TAB]
  2002.      atime   depth   group   mtime   newer   ok      prune   user
  2003.      cpio    exec    inum    name    nogroup perm    size    xdev
  2004.      ctime   fstype  ls      ncpio   nouser  print   type
  2005.      > find -u[TAB]
  2006.      > find -user [TAB]
  2007.      christos root
  2008.      > find -user c[TAB]
  2009.      > find -user christos
  2010.  
  2011.      Another useful feature is to override the default suffix rules.  For
  2012.      example:
  2013.  
  2014.      > complete rcp 'c/*:/f/' 'p/1/$hosts/:'
  2015.      > complete finger 'c/*@/$hosts/' 'p/1/u/@'
  2016.  
  2017.      completes from $hosts appending a `:' and then begins expanding files,
  2018.      where finger expands user-names appending an `@' and then begins expand-
  2019.      ing hosts.
  2020.  
  2021.      Another exotic example that makes use of dynamic command execution is:
  2022.  
  2023.      > complete talk p/1/'`users | tr " " "\012" | uniq`'/ \
  2024.                 n/\*/\`who\ \|\ grep\ \$:1\ \|\ awk\ \'\{\ print\ \$2\ \}\'\`/
  2025.  
  2026.      Here we want to get a list of the active users, as an argument to talk,
  2027.      then we want to pick the user, and find his tty...  Note that there is
  2028.      no quoting performed inside the completion patterns.  If the character
  2029.      '/' is used in the matched pattern, then another punctuation character
  2030.      can be used as a separator. The only pattern recognized is $:<number>
  2031.      which is substituted by the n'th word of the current line.
  2032.  
  2033.      Notes:
  2034.  
  2035.      1.   The completion command-patterns are overridden when the internal
  2036.           parsing mechanism determines that the completion is a login name,
  2037.           or a variable.
  2038.  
  2039.      2.   This is an experimental feature and the syntax/behavior may change
  2040.           in future versions.
  2041.  
  2042.  
  2043.    FYI
  2044.      This shell uses CBREAK mode but takes typed-ahead characters anyway.
  2045.      You can still use _✓s_✓t_✓t_✓y(1) to set some of the modes of your terminal (but
  2046.      not bindings).
  2047.  
  2048.      This shell will restore your tty to a sane mode if it appears to return
  2049.      from some command in raw, CBREAK, or noecho mode. This behavior can be
  2050.      changed using _✓s_✓e_✓t_✓t_✓y.
  2051.  
  2052.    ENVIRONMENT
  2053.      HPATH -- path to look for command documentation
  2054.      LANG -- used to give preferred character environment (see NLS)
  2055.      LC_CTYPE -- used to change only ctype character handling (see NLS)
  2056.      NOREBIND -- inhibits rebinding of printable characters to self-insert-
  2057.      command
  2058.      PATH -- path to look for command execution
  2059.      SHLVL -- current shell level nesting
  2060.      TERM -- used to tell how to handle the terminal
  2061.      LINES -- Number of lines in terminal (see WINDOW SIZE)
  2062.      COLUMNS -- Number of columns in terminal (see WINDOW SIZE)
  2063.      TERMCAP -- Terminal capability string (see WINDOW SIZE)
  2064.      SYSTYPE -- The current system type (Domain OS only)
  2065.  
  2066.    NEW SHELL VARIABLES
  2067.  
  2068.      addsuffix add a / for directories, and a space for normal files when
  2069.                complete matches a name exactly.  If unset don't add anything
  2070.                extra.
  2071.  
  2072.      ampm      show all times in 12 hour, AM/PM format.
  2073.  
  2074.      autocorrect
  2075.                Correct mis-spelled path components automatically before
  2076.                attempting completion.
  2077.  
  2078.      autoexpand
  2079.                invoke the expand-history function automatically on comple-
  2080.                tion.
  2081.  
  2082.      autolist  list possibilities on an ambiguous completion.
  2083.  
  2084.      autologout
  2085.                The first word indicates number of minutes of inactivity
  2086.                before automatic logout.  The optional second word indicates
  2087.                the number of minutes of inactivity after which the user will
  2088.                be prompted for his login password to enter a command.
  2089.  
  2090.      backslash_quote
  2091.                makes the backslash quote \, ', and ". This option changes the
  2092.                parsing mechanism for tcsh, and it can cause syntax errors in
  2093.                _✓c_✓s_✓h scripts.
  2094.  
  2095.      correct   automatically try to correct the spelling of commands.  Must
  2096.                be set to either correct=cmd, only command name will be
  2097.                corrected, or correct=all, the whole line will be corrected.
  2098.  
  2099.      dextract  extract a directory on pushd rather than rotating.
  2100.  
  2101.      dunique   Push only directories that are not already in the directory
  2102.                stack.
  2103.  
  2104.      echo_style
  2105.                Set the style of the builtin echo. Valid values are:
  2106.  
  2107.             _✓b_✓s_✓d :   if the first argument is -n, don't echo a newline.
  2108.  
  2109.             _✓s_✓y_✓s_✓v :  recognize \ escape sequences in echo strings.
  2110.  
  2111.             _✓b_✓o_✓t_✓h :  recognize both -n and \ escape sequences.
  2112.  
  2113.             _✓n_✓o_✓n_✓e :  the purist's echo.
  2114.  
  2115.      edit      use the input editor, set by default.
  2116.  
  2117.      fignore   list of file name suffixes (e.g. .o, ~) to ignore during com-
  2118.                plete.
  2119.  
  2120.      gid       the current real group id.
  2121.  
  2122.      histlit   If set, history lines in the editor will be shown with its
  2123.                literal value (that is the line as it was input) instead of
  2124.                the shells lexical version. The current history line can be
  2125.                toggled between literal and lexical with the toggle-literal-
  2126.                history function.  History lines saved at shell exit are also
  2127.                saved as this variable indicates.
  2128.  
  2129.      histfile  If set, it contains the full path-name where a history file is
  2130.                read/written.  It defaults to $home/.history. This is useful
  2131.                when sharing the same home directory in different machines, or
  2132.                if one wants to save all the histories in the tty sessions. It
  2133.                is usually set in .cshrc for interactive shells, because his-
  2134.                tory is sourced between .cshrc and .login so that it is avail-
  2135.                able from .login.
  2136.  
  2137.      inputmode Can be set to either _✓i_✓n_✓s_✓e_✓r_✓t or _✓o_✓v_✓e_✓r_✓w_✓r_✓i_✓t_✓e to control the line
  2138.                editing behavior, as described in section 1.
  2139.  
  2140.      listjobs  list all jobs when suspending. set listjobs=long, produces
  2141.                long format.
  2142.  
  2143.      listlinks Resolve symbolic links when listing files so that the correct
  2144.                filetype is shown.
  2145.  
  2146.      listmax   maximum number of items to list without asking first.
  2147.  
  2148.      matchbeep control beeping on completion.  With matchbeep=nomatch, com-
  2149.                pletion only beeps when there is no match, with
  2150.                matchbeep=ambiguous, beeps also when there are multiple
  2151.                matches, with matchbeep=notunique, beeps when there is one
  2152.                exact and other longer matches, with matchbeep=never, it never
  2153.                beeps.
  2154.  
  2155.      nobeep    Disables beeping completely.
  2156.  
  2157.      nokanji   If kanji support is enable, setting this variable disables it,
  2158.                so that the meta key can be used.
  2159.  
  2160.      nostat    An list of directories that should not be stat'ed during a
  2161.                completion operation. Some directories e.g. "/afs", can take
  2162.                too much time to complete a _✓s_✓t_✓a_✓t(_✓2) operation, making them
  2163.                prime candidates for membership in this list.
  2164.  
  2165.      oid       The organization id number (Domain OS only).
  2166.  
  2167.      printexitvalue
  2168.                if an interactive program exits non-zero, print the exit
  2169.                value.
  2170.  
  2171.      prompt    the string to prompt with.
  2172.  
  2173.      prompt2   the string to prompt for while and for loops with.
  2174.  
  2175.      prompt3   the string to prompt with when automatic spelling correction
  2176.                has corrected a command line.
  2177.  
  2178.      pushdtohome
  2179.                make pushd with no args do a "pushd ~" (like cd does).
  2180.  
  2181.      pushdsilent
  2182.                do not print the dir stack on every pushd and popd.
  2183.  
  2184.      recexact  recognize exact matches even if they are ambiguous.
  2185.  
  2186.      recognize_only_executables
  2187.                list choices of commands only displays files in the path that
  2188.                are executable (slow).
  2189.  
  2190.      rmstar    Prompt the user before execution of `rm *'.
  2191.  
  2192.      savedirs  Before exiting, create a file called $HOME/.cshdirs that con-
  2193.                tains the necessary commands to restore the current directory
  2194.                stack. _✓T_✓c_✓s_✓h will read this file during startup and restore the
  2195.                directory stack.
  2196.  
  2197.      savehist  number of history items to save between login sessions.  If it
  2198.                is just set, the number of items is taken from $history.
  2199.  
  2200.      shlvl     Integer value indicating the number of nested shells.
  2201.  
  2202.      showdots  show hidden files in list and complete operations. If it is
  2203.                set to -A, then "." and ".." are not displayed, similarly to
  2204.                the BSD ls -A.
  2205.  
  2206.      symlinks  can be set to: _✓c_✓h_✓a_✓s_✓e , in order to resolve the full path
  2207.                names, _✓i_✓g_✓n_✓o_✓r_✓e , in order to use $cwd to resolve relative
  2208.                directory references for builtins.  _✓e_✓x_✓p_✓a_✓n_✓d , in order to use
  2209.                $cwd and rewrite the arguments for commands.
  2210.  
  2211.      tcsh      Contains the current version of the shell as R.VV.PP. The _✓R
  2212.                indicates the major release number, the _✓V_✓V the current version
  2213.                and the _✓P_✓P the patchlevel.
  2214.  
  2215.      term      the terminal type; see above.
  2216.  
  2217.      tperiod   periodic command wait period (in minutes).
  2218.  
  2219.      tty       The name of the tty, or empty if not attached to one.
  2220.  
  2221.      uid       the current real user ID.
  2222.  
  2223.      version   the version ID stamp for this _✓t_✓c_✓s_✓h. It contains, the origin of
  2224.                this version of _✓t_✓c_✓s_✓h, the date this version was released and a
  2225.                string containing a comma separated list of the compile time
  2226.                options enabled:
  2227.                8b 7b  If tcsh was compiled to be eight bit clean
  2228.                       or not.  The default is 8b.
  2229.                nls    Set if tcsh uses the system's NLS, should be
  2230.                       the default for systems that have NLS.
  2231.                lf     Set if tcsh should execute .login before
  2232.                       .cshrc on login shells. Default is not set.
  2233.                dl     Set if tcsh should put . last on the path
  2234.                       for security. Default is set.
  2235.                vi     Set if tcsh's default editor is vi. Default
  2236.                       is unset (emacs)
  2237.                dtr    Set if tcsh should drop dtr on login shells
  2238.                       when exiting.  Default is unset.
  2239.                bye    Set if tcsh should accept bye in addition
  2240.                       to logout, and rename log to watchlog.
  2241.                       Default is unset.
  2242.                al     Set if tcsh should determine if autologout
  2243.                       should be enabled. The default is set.
  2244.                dir    Set if tcsh should save and restore the directory
  2245.                       stack.
  2246.                kan    Set if tcsh is compiled for Kanji.
  2247.                       (ignore the iso character set.) Default is unset.
  2248.                sm     Set if tcsh was compiled to use the system's malloc.
  2249.  
  2250.      In addition to the above strings, administrators can enter local strings
  2251.      to indicate differences in the local version.
  2252.  
  2253.  
  2254.      visiblebell
  2255.                use the visible bell (screen flash) rather than audible bell.
  2256.  
  2257.      watch     list of events to watch.
  2258.  
  2259.      who       format string for the printouts generated when _✓w_✓a_✓t_✓c_✓h is set.
  2260.  
  2261.      wordchars list of non-alphanumeric characters considered part of a word
  2262.                for the purpose of the forward-word, backward-word etc func-
  2263.                tions -- defaults to "*?_-.[]~=".
  2264.  
  2265.    NEW SPECIAL ALIASES
  2266.  
  2267.      _✓c_✓w_✓d_✓c_✓m_✓d    the command is run after every change of working directory.
  2268.  
  2269.      _✓p_✓e_✓r_✓i_✓o_✓d_✓i_✓c  the command to be run every _✓t_✓p_✓e_✓r_✓i_✓o_✓d minutes.
  2270.  
  2271.      _✓p_✓r_✓e_✓c_✓m_✓d    the command to be run prior to printing each prompt.
  2272.  
  2273.      _✓b_✓e_✓e_✓p_✓c_✓m_✓d   the command to be run every time _✓t_✓c_✓s_✓h wants to echo the termi-
  2274.                nal bell.
  2275.  
  2276.    SEE ALSO
  2277.      xterm(1), twm(1), csh(1), chsh(1), termcap(5), termio(7)
  2278.  
  2279.    BUGS
  2280.      The screen update for lines longer than the screen width is very poor if
  2281.      the terminal cannot move the cursor up (i.e. terminal type "dumb").
  2282.  
  2283.      I am certain that there are bugs.  Bugs (preferably with fixes) should
  2284.      be sent to Christos Zoulas (christos@ee.cornell.edu).
  2285.  
  2286.    VERSION
  2287.      This man page documents tcsh 6.02.00 (Cornell) 05/15/92.
  2288.  
  2289.    AUTHORS
  2290.      Ken Greer, HP Labs, 1981
  2291.      Wrote the command completion.
  2292.  
  2293.      Mike Ellis, Fairchild, 1983
  2294.      Added command name recognition/completion.
  2295.  
  2296.      Paul Placeway, Ohio State CIS dept., 1983
  2297.      Added the command line editor.
  2298.  
  2299.      Rayan Zachariassen, University of Toronto, 1984
  2300.      Added the builtin _✓w_✓h_✓i_✓c_✓h feature to the editor, and the code for _✓l_✓s-_✓F .
  2301.      Also numerous bug fixes, modifications, and performance enhancements.
  2302.  
  2303.      Chris Kingsley, Caltech
  2304.      Wrote the fast storage allocator routines (nmalloc.c).
  2305.  
  2306.      Karl Kleinpaste, CCI 1983-4
  2307.      Added special aliases, directory stack extraction stuff, login/logout
  2308.      watch, and scheduled events.  Also came up with the idea of the new
  2309.      prompt format.
  2310.  
  2311.      Paul Placeway, Ohio State CIS dept., 1987
  2312.      Re-wrote the editor, cleaned up other code, and added the prompt rou-
  2313.      tines, added to the syntax for file name expressions, and sped up the
  2314.      shell some.
  2315.  
  2316.      Chris Grevstad, TRW, 1987
  2317.      Ported the 4.3 csh sources to tcsh.
  2318.  
  2319.      Christos S. Zoulas, Cornell U. EE dept., 1987-91
  2320.      ported tcsh to HPUX, and System V rel. 2 and 3 and wrote a SysV version
  2321.      of getwd.c. Added SHORT_STRINGS support. New version of sh.glob.c.
  2322.  
  2323.      James J Dempsey, BBN, 1988, and Paul Placeway, OSU, 1988
  2324.      Re-ported tcsh to A/UX.
  2325.  
  2326.  
  2327.    BUGFIXES AND ENHANCEMENTS
  2328.  
  2329.      Mika Liljeberg, liljeber@kruuna.Helsinki.FI
  2330.      Linux port.
  2331.  
  2332.      Scott Krotz, Motorola, 1991
  2333.      Minix port.
  2334.  
  2335.      David Dawes, Sydney U. Australia, Physics dept., 1991
  2336.      SVR4 job control fixes. (reverse pipeline startup code, and signal
  2337.      fixes).
  2338.  
  2339.      Jose Sousa, Interactive Systems Corp., 1991
  2340.      Extended vi fixes. Added delete command in vi.
  2341.  
  2342.      Marc Horowitz, MIT, 1991
  2343.      Ansification fixes, new exec hashing code, imake fixes, where builtin.
  2344.  
  2345.      Eric Schnoebelen, Convex, 1990
  2346.      Convex support, lots of csh bug fixes, save and restore of directory
  2347.      stack.
  2348.  
  2349.      Jaap Vermeulen, Sequent, 1990-91
  2350.      Vi mode fixes, expand-line, window change fixes, ported to symmetry
  2351.      machines.
  2352.  
  2353.      Ron Flax, Apple, 1990
  2354.      Ported again to A/UX 2.0
  2355.  
  2356.      Dan Oscarsson, LTH Sweden, 1990
  2357.      NLS support and simulated for non NLS sites.  Correction of file names
  2358.      also handles the case when the / is replaced by another character.  The
  2359.      editor does not switch into cbreak mode unless needed.  The shell will
  2360.      not use character attributes when output is not to a tty.
  2361.  
  2362.      Johan Widen, SICS Sweden, 1990
  2363.      Shell level variable, mach support, correct-line, 8-bit printing.
  2364.  
  2365.      Matt Day, Sanyo Icon, 1990
  2366.      Added POSIX termio support; Fixed limit stuff for SysV.
  2367.  
  2368.      Hans J. Albertsson (Sun Sweden)
  2369.      Added the ampm variable handling, DING!, and the settc and telltc buil-
  2370.      tins.
  2371.  
  2372.      Michael Bloom
  2373.      Fixed some of the interrupt handling.
  2374.  
  2375.      Michael Fine, Digital Equipment Corp
  2376.      added the extended key support.
  2377.  
  2378.      Daniel Long, NNSC, 1988
  2379.      Added the wordchars variable.
  2380.  
  2381.      George Hartzell, MCD Biology, University of Colorado-Boulder, 1988
  2382.      Fixed the always resetting to DEL bug.
  2383.  
  2384.      Patrick Wolfe, Kuck and Associates, Inc., 1988
  2385.      Cleaned up VI mode and wrote the new editor description (in section 1).
  2386.  
  2387.      Jak Kirman, 1988
  2388.      Fixed the SunOS 4 giant stack allocation bug.
  2389.  
  2390.      Bruce Robertson, Tektronix, 1989
  2391.      Fixed setting erase and kill (again).
  2392.  
  2393.      David C Lawrence, Rensselaer Polytechnic Institute, 1989
  2394.      Added "autolist" variable and code to list possibilities on ambiguous
  2395.      completion.
  2396.  
  2397.      Martin Boyer, Institut de recherche d'Hydro-Quebec, 1991.
  2398.      Modified "autolist" variable and code to give options on beeping
  2399.      behavior.  Modified the history search to search for the whole string
  2400.      from the beginning of the line to the cursor.
  2401.  
  2402.      Alec Wolman, DEC, 1989
  2403.      Added code to allow newlines in the prompt.
  2404.  
  2405.      Matt Landau, BBN, 1989
  2406.      Fixed YP bugs on Suns, added .tcshrc stuff.
  2407.  
  2408.      Ray Moody, Purdue Physics, 1989
  2409.      Added the code to do magic spacebar history expansion.
  2410.  
  2411.      Mordechai ????, Intel, 1989
  2412.      Re-arranged the printprompt() routine to use a switch(*cp) (rather than
  2413.      a bunch of ifs), and added a few things to it.
  2414.  
  2415.      Josh Siegel, dspo.gov, 1989
  2416.      Fixed "fg-editor" and added the status line shell variables "sl" and
  2417.      "el".
  2418.  
  2419.      Karl Berry, UMB, 1989
  2420.      Fixed a bug involving environ (in sh.func.c) on NeXT computers.
  2421.  
  2422.      Michael Greim, Universitaet des Saarlandes, Saarbruecken, W-Germany,
  2423.      Fixed the nested backquote bug (yes, you can do it; think about aliases)
  2424.      in 4.2 csh.  This fix was posted to comp.bugs.4bsd.
  2425.  
  2426.      Kazuhiro Honda, Department of Computer Science, Keio University, 1989
  2427.      Added the code for automatic spelling correction, the prompt3 stuff (the
  2428.      autocorrect prompt), and HOSTTYPE symbols for the Sony NEWS.
  2429.  
  2430.      Paul Placeway, BBN, 1990
  2431.      Fixed character redrawing code insert bugs, and made redrawing code han-
  2432.      dle multiple character movement, insert, and delete (if it exists).
  2433.      Fixed setting of SHELL.
  2434.  
  2435.      Per Hedeland, Ellemtel, Sweden, 1990
  2436.      Various bugfixes and improvements, e.g. in history expansion, autolist,
  2437.      added autoexpand, updated the manual.
  2438.  
  2439.    THANKS TO
  2440.      A special thanks to: Bryan Dunlap, Clayton Elwell, Karl Kleinpaste, Bob
  2441.      Manson, Steve Romig, Diana Smetters, Bob Sutterfield, Mark Verber,
  2442.      Elizabeth Zwicky, and all the other people at Ohio State for suggestions
  2443.      and encouragement.
  2444.  
  2445.      Also, thanks to all the people on the net for putting up with, reporting
  2446.      bugs in, and suggesting new additions to the old tcsh editor.
  2447.  
  2448.  
  2449.  
  2450.  
  2451.  
  2452.  
  2453.  
  2454.  
  2455.  
  2456.  
  2457.  
  2458.  
  2459.  
  2460.  
  2461.  
  2462.  
  2463.  
  2464.  
  2465.  
  2466.  
  2467.  
  2468.  
  2469.  
  2470.  
  2471.  
  2472.  
  2473.  
  2474.  
  2475.  
  2476.  
  2477.  
  2478.  
  2479.  
  2480.  
  2481.  
  2482.  
  2483.  
  2484.  
  2485.  
  2486.  
  2487.  
  2488.  
  2489.  
  2490.  
  2491.  
  2492.  
  2493.  
  2494.  
  2495.  
  2496.  
  2497.  
  2498.  
  2499.  
  2500.  
  2501.  
  2502.  
  2503.  
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.